/*****************************************************************************
* BackToTheHtml Command
*///**************************************************************************
function BackToTheHtml(node)
{
	if(node == null)
		this.node = document; 
	else
		this.node = node; 
};
BackToTheHtml.prototype.node = null;

BackToTheHtml.prototype.execute = function()
{
	this.activateObject();
}

BackToTheHtml.prototype.activateObject = function(domObject)
{
	var aDomObject = document.getElementsByTagName('object');

	var activationObject;
	for(var i=0; i<aDomObject.length; i++)
		if((activationObject = this.getActivationObject(aDomObject[i])) != null)
			activationObject.execute();
};

BackToTheHtml.prototype.getActivationObject = function(domObject)
{
	var classid = domObject.classid.toUpperCase().substr('clsid:'.length);
	var mimeType = domObject.type.toLowerCase();

	switch(true)
	{
		case 
			classid == 'D27CDB6E-AE6D-11CF-96B8-444553540000' 
			||
			mimeType == 'application/x-shockwave-flash'
		:
			return new ActivateObjectFlash(domObject);
		
		case 
			classid == '22D6F312-B0F6-11D0-94AB-0080C74C7E95' 
			|| 
			mimeType == 'video/x-ms-asf-plugin'
		:
			return new ActivateObjectAsf(domObject);
		default :
			return null;
	}
};

/*****************************************************************************
* ActivateObject Command
*///**************************************************************************
function ActivateObject(domObject)
{
	this.domObject = domObject;
}

ActivateObject.prototype.domObject = null;
ActivateObject.prototype.classid = null;
ActivateObject.prototype.aHtmlAttribute = ['accessKey','align','alt','archive','border','code','codeBase','codeType','declare','dir','height','hideFocus','hspace','id','lang','language','name','standby','tabIndex','title','useMap','vspace','width'];
ActivateObject.prototype.aObjectProperty = null;

ActivateObject.prototype.execute = function()
{
	this.setTextHtml();
	this.createObject();
	this.setSpecialProperties();
	this.setProperties();
	this.replaceObject();
}

ActivateObject.prototype.setTextHtml = function()
{
	var str = '';
	str += '<object BackToTheHtml ' + '\n';
	str += ' classid="clsid:' + this.classid + '" ' + '\n';

	//Add HTML attributes to the <object> tag
	for(var i=0; i<this.aHtmlAttribute.length; i++)
	{
		var name = this.aHtmlAttribute[i];
		if(typeof this.domObject[name] != 'undefined' && this.domObject[name].toString() != ''){
			str += '\t' + name + '="' + this.domObject[name].toString() + '" ' + '\n';
		}
	}

	str += '>';
	str += '</object>';

	this.textHtml = str;
};

ActivateObject.prototype.createObject = function()
{
	var domDiv = document.createElement('div');
	domDiv.innerHTML = this.textHtml;
	this.xndObject = domDiv.firstChild;
};

ActivateObject.prototype.setSpecialProperties = function()
{
	if(typeof this.domObject.className != 'undefined' && this.domObject.className.toString() != '')
		this.xndObject.className = this.domObject.className

	if(typeof this.domObject.style.cssText != 'undefined' && this.domObject.style.cssText.toString() != '')
		this.xndObject.style.cssText = this.domObject.style.cssText;
};

ActivateObject.prototype.setProperties = function()
{
	for(var i=0; i<this.aObjectProperty.length; i++)
	{
		var name = this.aObjectProperty[i];
		if(typeof this.domObject[name] != 'undefined' && this.domObject[name].toString() != '' ){
			this.xndObject[name] = this.domObject[name];
		}
	}
};

ActivateObject.prototype.setPropertiesFromSetMethod = function()
{
};

ActivateObject.prototype.replaceObject = function()
{
	this.domObject.parentNode.insertBefore(this.xndObject,this.domObject);
	this.domObject.parentNode.removeChild(this.domObject);
};

/*****************************************************************************
* ActivateObjectFlash Command
*///**************************************************************************
function ActivateObjectFlash(domObject)
{
	ActivateObject.call(this,domObject);
}
ActivateObjectFlash.prototype = new ActivateObject;
ActivateObjectFlash.prototype.aObjectProperty = ['FrameNum','FlashVars','Playing','Quality','Quality2','Scalemode','Scale','AlignMode','SAlign','BackgroundColor','BGColor','Loop','Movie','WMode','Base','DeviceFont','EmbedMovie','SWRemote','AllowScriptAccess'];
ActivateObjectFlash.prototype.classid = 'D27CDB6E-AE6D-11CF-96B8-444553540000';

/*****************************************************************************
* ActivateObjectWmp Command
*///**************************************************************************
function ActivateObjectAsf(domObject)
{
	ActivateObject.call(this,domObject);
}
ActivateObjectAsf.prototype = new ActivateObject;
ActivateObjectAsf.prototype.aObjectProperty = ['AudioStream','AutoSize','AutoStart','AnimationAtStart','AllowChangeDisplaySize','AutoRewind','Balance','BaseURL','CaptioningID','ClickToPlay','CursorType','CurrentPosition','CurrentMarker','DefaultFrame','DisplayBackColor','DisplayForeColor','DisplayMode','DisplaySize','Enabled','EnableContextMenu','EnablePositionControls','EnableFullScreenControls','EnableTracker','Filename','InvokeURLs','Language','Mute','PlayCount','PreviewMode','Rate','SAMILang','SAMIStyle','SAMIFileName','SelectionStart','SelectionEnd','SendOpenStateChangeEvents','SendWarningEvents','SendErrorEvents','SendKeyboardEvents','SendMouseClickEvents','SendMouseMoveEvents','SendPlayStateChangeEvents','ShowCaptioning','ShowControls','ShowAudioControls','ShowDisplay','ShowGotoBar','ShowPositionControls','ShowStatusBar','ShowTracker','TransparentAtStart','VideoBorderWidth','VideoBorderColor','VideoBorder3D','Volume','WindowlessVideo'];
ActivateObjectAsf.prototype.classid = '22D6F312-B0F6-11D0-94AB-0080C74C7E95';

/*****************************************************************************
* Init
*///**************************************************************************
if(typeof document.onreadystatechange != 'undefined')
{
	document.write('<style type="text/css">OBJECT{visibility:hidden;}</style>');
	document.onreadystatechange = function()
	{
		if(document.readyState == 'complete')
		{
			new BackToTheHtml().execute();
			document.styleSheets[document.styleSheets.length-1].addRule("OBJECT","visibility:visible;");
			//alert(document.body.innerHTML);
		}
	}
}