// ==UserScript==
// @name         	Set-Flash-Quality (SFQ)
// @author		Sephiroth - www.sephiroth-j.de
// @namespace	http://www.sephiroth-j.de/
// @description	sets the quality to low for every embeded object (primary flash)
// @include		*
// ==/UserScript==

// desired level can be set in about:config via greasemonkey.scriptvals.http://www.sephiroth-j.de//Set-Flash-Quality (SFQ).FlashQuality
// possible values can be found at http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701 (look for quality ;-))
const gQualityLevel = GM_getValue("FlashQuality", "low");
//GM_log(gQualityLevel);

var qparams = document.getElementsByName("quality");
//qparams = document.evaluate("//param[@name='quality']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i=0,l=qparams.length; i<l; i++)
{
	qparams[i].setAttribute("value", gQualityLevel);
}

var embeded = document.getElementsByTagName("embed");
for (var i=0,l=embeded.length,parent,embed,before,after; i<l; i++)
{
	embed = embeded[i];
	embed.setAttribute("quality", gQualityLevel);
	if (embed.parentNode)
	{
		parent = embed.parentNode;
		after = embed.nextSibling;
		before = embed.previousSibling;
		parent.removeChild(embed);
		parent.insertBefore(embed, before);
	}
}

var objects = document.getElementsByTagName("object");
for (var i=0,l=objects.length,parent,obj,before,after; i<l; i++)
{
	obj = objects[i];
	obj.setAttribute("quality", gQualityLevel);
	if (obj.parentNode)
	{
		parent = obj.parentNode;
		after = obj.nextSibling;
		before = obj.previousSibling;
		parent.removeChild(obj);
		parent.insertBefore(obj, before);
	}
}