// for use with "swfobject.createSWF" -- swfobject will do this automatically during a "swfobject.embedSwf"
function getFlashVars(flashvarsObj) {
	if(typeof flashvarsObj != "object") return false;
	var flashVars = "";

	for(var i in flashvarsObj) {
		if(flashvarsObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries
			if(flashVars != "") {
				flashVars += "&" + i + "=" + flashvarsObj[i];
			} else {
				flashVars = i + "=" + flashvarsObj[i];
			}
		}
	}
	//doLog("getFlashVars1: "+flashVars);
	return flashVars;
}

function doAttachDiv(targetId, newId) {
	if(targetId == null || newId == null) return;

	var targetDiv = document.getElementById(targetId);
	if(targetDiv == null) return;

	var newDiv = document.createElement('div');
	if(newDiv == null) return;
	newDiv.id = newId;

	// remove all child nodes. innerHtml == bad for IE6
	/* IE 6 error?
	while (targetDiv.childNodes[0]) {
		targetDiv.removeChild(targetDiv.childNodes[0]);
	}
	*/
	doRemoveChildNodes(targetDiv);
	targetDiv.appendChild(newDiv);
}

function doRemoveChildNodes(obj) {
	while(obj.hasChildNodes()) {
		obj.removeChild(obj.firstChild);
		//obj.removeChild(obj.childNodes[0]);
	}
}

function initPageRedraw() {
	return;
	if(typeof(swfobject) == 'undefined') return;
	swfobject.addDomLoadEvent(doPageRedraw);
}

function doPageRedraw(objId) {
	return;
	objId = objId && (typeof objId == "string") ? objId : "SwfObjectPageRefresher";

	var oldDiv = document.getElementById(objId);
	if(oldDiv != null) {
		oldDiv.style.visibility = "visible";
		oldDiv.style.display = "none";
		oldDiv.style.display = "block";
		doLog("!doPageRedraw: reset: "+objId+" | "+oldDiv.style.visibility+" | "+oldDiv.style.display);
		return;
	}

	doLog("!doPageRedraw: create");
	var newDiv = document.createElement("div");
	newDiv.id = "SwfObjectPageRefresher";
	document.getElementsByTagName("body")[0].appendChild(newDiv);
}

function doLog() {
	if(window == null || (typeof window.console == "undefined")) return false;

	if(typeof window.console.debug != "undefined") {
		window.console.debug.apply(window.console, arguments);
	} else if(typeof window.console.log != "undefined") {
		window.console.log.apply(window.console, arguments);
	}
}

function doSwfObjectEmbed(swfObj) {
	if(!swfObj) return;

	if(!swfObj.validVersion && !swfObj.express) {
		doLog("doSwfObjectEmbed: incompatible client version: requires: "+swfObj.version);
		if(swfObj.redirectUrl) { window.location.href = swfObj.redirectUrl; }
		// else alt content
	} else if(swfObj.delayEmbed) {
		doLog("doSwfObjectEmbed: SwfObject output interrupted - geoLock or haltWrite enabled: "+swfObj.id);
	} else {
		doAttachDiv(swfObj.div, swfObj.id);

		swfobject.embedSWF(swfObj.flashSrc, swfObj.id, swfObj.width,
			swfObj.height, swfObj.version, swfObj.expressUrl,
			swfObj.flashvars, swfObj.params, swfObj.attributes);

		doLog("doSwfObjectEmbed: embed swf: "+swfObj.id);
	}
}

function doSwfObjectEmbedDelayed(swfObj) {
	if(!swfObj || !swfObj.delayEmbed) {
		doLog("doSwfObjectEmbedDelayed: launchSwf: display alt content");
		return;
	}

	if(!swfObj.validVersion && swfObj.express) {
		swfObj.flashvars = {
			MMredirectURL:window.location,
			MMdoctitle:document.title
		};
		swfObj.attributes.data = swfObj.expressUrl;
	} else {
		swfObj.attributes.data = swfObj.validVersion ? swfObj.flashSrc : swfObj.expressUrl;
	}

	swfObj.attributes.height = swfObj.height;
	swfObj.attributes.width = swfObj.width;
	swfObj.params.flashvars = getFlashVars(swfObj.flashvars);
	//swfObj.flashvars = false;

	if(swfObj.validVersion || swfObj.express) {
		doAttachDiv(swfObj.div, swfObj.id);
	
		swfobject.createSWF(swfObj.attributes, swfObj.params, swfObj.id);
		doPageRedraw(swfObj.id);
		doLog("doSwfObjectEmbedDelayed: create swf: "+swfObj.id+" | "+swfObj.attributes.data);
	} else {
		doLog("doSwfObjectEmbedDelayed: alt content: "+swfObj.id+" | "+swfObj.attributes.data);
	} // else alt content
}




