Einherjar Chronicle, flash low quality

Force EinChro's Flash quality to low, faster game, lower cpu consumption

// ==UserScript==
// @name        Einherjar Chronicle, flash low quality
// @namespace   einchroflashlow
// @description Force EinChro's Flash quality to low, faster game, lower cpu consumption
// @include     http*://*.aprts-games.com/player
// @version     1
// @grant 	GM_log
// @grant 	GM_getValue
// @grant 	GM_setValue
// @grant 	GM_openInTab
// @grant 	GM_registerMenuCommand
// @grant 	unsafeWindow
// ==/UserScript==

if (typeof GM_log == "undefined") {
    GM_log = (window.opera) ? opera.postError : console.log;
}

if (typeof GM_openInTab == "undefined") {
	GM_openInTab = window.open;
}

	// We will use static values if we can't use Greasemonkey API
	//eg. low, low, high (see http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701&sliceId=2)
	var s_quality = 'low';
	//Overrides existing quality settings
	var s_force = true;

hello_flash=function()
{
	if (document.embeds){
		var doc_embeds = document.embeds;
	} else {
		var doc_embeds = document.getElementsByTagName('embed');
	}
if ( (doc_embeds != null) && (doc_embeds.length > 0) ) {
	for (var objs = doc_embeds, i = objs.length - 1; i >= 0; i--) {
		if ( objs[i].getAttribute('quality') != s_quality )
		{
			objs[i].setAttribute('quality', s_quality);
//			objs[i].src+="#r";
			mysrc=objs[i].getAttribute('src');
			if (mysrc != null) {
				objs[i].setAttribute('src','');
				objs[i].setAttribute('src',mysrc);
				continue;
			}
			mynextSibling=objs[i].nextSibling;
			myparentnode=objs[i].parentNode;
			if (mynextSibling != null)
			{
				removednode=objs[i].parentNode.removeChild(objs[i]);
				myparentnode.insertBefore(removednode,mynextSibling);
			}
			else
			{
				removednode=objs[i].parentNode.removeChild(objs[i]);
				myparentnode.appendChild(removednode);
			}
		}
	}
console.log("hello flash");
}

var doc_objects=document.getElementsByTagName('object');
if ( (doc_objects != null) && (doc_objects.length > 0) ) {
	for (objs = doc_objects, i = objs.length - 1; i >= 0; i--) {
		var changed = false;
		if ( (objs[i].getAttribute('type')!=null) && (/silverlight/i.test(objs[i].getAttribute('type'))) ) {
			continue;
		}
		for (var c = objs[i].childNodes, j = c.length - 1, set = false; j >= 0; j--) {
			if ((c[j].tagName == 'PARAM') && (c[j].getAttribute('name') == 'quality') && s_force) {
				if ( c[j].getAttribute('value') != s_quality )
				{
					c[j].setAttribute('value', s_quality);
					changed = true;
				}
				set = true;
				break;
			}
		}
		if (!set)
		{
			v=objs[i].appendChild(document.createElement('param'));
			v.setAttribute('name', 'quality');
			v.setAttribute('value', s_quality);
			changed = true;
		}

		if (changed)
		{
			mynextSibling=objs[i].nextSibling;
			myparentnode=objs[i].parentNode;
			mysrc=objs[i].getAttribute('data');
			if (mysrc != null) {
				objs[i].setAttribute('data','');
				objs[i].setAttribute('data',mysrc);
				continue;
			}
			if (mynextSibling != null)
			{
				removednode=objs[i].parentNode.removeChild(objs[i]);
				myparentnode.insertBefore(removednode,mynextSibling);
			}
			else
			{
				removednode=objs[i].parentNode.removeChild(objs[i]);
				myparentnode.appendChild(removednode);
			}
		}
	}
//	alert('test'); // for debugging
}
}
hello_flash();
window.addEventListener("DOMNodeInserted", function(event) {
	if ( event.target && (( event.target.nodeName == 'EMBED' ) || ( event.target.nodeName == 'OBJECT' )) )
	{
		hello_flash();
	}
}, true);