/*
Function:
    prismMediaEmbedVideo()
Description:
    Embed video player in HTML content
Date:
    2008-07-17
Arguments:
    fileurl
        location of movie file
    width="auto"
        horizontal size in pixels
    height="auto"
        vertical size in pixels
    type="auto"
        "auto"|"avi"|"mov"|"mpg"|"swf"|"wmv"|"other". Default is "auto" (auto-detect from filename)
    optionarray
        associative array containing options for player:
            bgcolor="#FFFFFF"
            autostart=0
            repeat=0
            showcontrols=1
    paramarray:
        associative array containing parameters to insert directly into html
Effects:
    Returns void
    Outputs to document stream
Sample HTML:
    <div>
      <script type="text/javascript" src="/client_asset/javascript/medialib.js"></script>
      <script type="text/javascript">
        file="/multimedia/video.avi";
        width=320;
        height=240;
        prismMediaEmbedVideo(file, width, height);
      </script>
      <noscript>
        <a href="/multimedia/video.avi">Download video file</a>
      </noscript>
    </div>
*/
function prismMediaEmbedVideo(fileurl, width, height, type, optionarray, paramarray)
{
	if (fileurl === undefined) return "error";
	if (width === undefined || width == "auto") width = 0;
	if (height === undefined || height == "auto") height = 0;
	if (type === undefined) type = "";
	if (optionarray === undefined) optionarray = new Array();
	if (paramarray === undefined) paramarray = new Array();
	var option = {
		bgcolor: optionarray.bgcolor === undefined ? "#FFFFFF" : optionarray.bgcolor,
		autostart: optionarray.autostart === undefined ? false : optionarray.autostart,
		repeat: optionarray.repeat === undefined ? false : optionarray.repeat,
		showcontrols: optionarray.showcontrols === undefined ? true : optionarray.showcontrols
	}

	var CONST_TYPE = {
		auto: "",
		avi: "wmv",
		mov: "mov",
		qt: "mov",
		mpg: "mpg",
		mpeg: "mpg",
		swf: "swf",
		flv: "swf",
		wmv: "wmv",
		other: "other",
		unknown: "other"
	};
	var	CONST_FORMAT = {
			mov: {
				classid: "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",
				codebase: "http://www.apple.com/qtactivex/qtplugin.cab",
				pluginspage: "http://www.apple.com/quicktime/download/",
				mediatype: "video/quicktime",
				playertype: "",
				addwidth: 0,
				addheight: option.showcontrols ? 15 : 0,
				param: {
					// volume=0-255, scale=[ToFit, Aspect, {number scale factor}]
				}
			},
			mpg: {
				classid: "clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6",
				codebase: "",
				pluginspage: "",
				mediatype: "video/mpeg",
				playertype: "application/mpeg",
				addwidth: 0,
				addheight: option.showcontrols ? 40 : 0,
				param: { }
			},
			swf: {
				classid: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
				codebase: "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0",
				pluginspage: "http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash",
				mediatype: "application/x-shockwave-flash",
				playertype: "application/x-shockwave-flash",
				addwidth: 0,
				addheight: 0,
				param: { }
			},
			wmv: {
				classid: "clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95",
				codebase: "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701",
				pluginspage: "http://microsoft.com/windows/mediaplayer/en/download/",
				mediatype: "video/x-ms-wmv",
				playertype: "application/x-oleobject",
				addwidth: 0,
				addheight: option.showcontrols ? 45 : 0,
				param: {
					// currentPosition=seconds, fullScreen=true, PlayCount=1+, uiMode=[invisible, none, mini, full], volume=0-100
				}
			},
			other: {
				classid: "",
				codebase: "",
				pluginspage: "",
				mediatype: "video",
				playertype: "",
				addwidth: 0,
				addheight: 0,
				param: { }
			}
		};
	var CONST_DEFAULT_PARAM = {
			src: fileurl,
			url: fileurl,
			filename: fileurl,
			autoplay: option.autostart ? "true" : "false",
			autostart: option.autostart ? "true" : "false",
			controller: option.showcontrols ? "true" : "false",
			showcontrols: option.showcontrols ? "true" : "false",
			//showdisplay: option.showcontrols ? "true" : "false",
			loop: option.repeat ? "true" : "false",
			bgcolor: option.bgcolor
		};
	var CONST_STANDBYTEXT = "Loading media... please stand by";

	// Get format info
	var ftype = CONST_TYPE[type];
	if (!ftype) {
		ftype = CONST_TYPE[fileurl.substr(fileurl.lastIndexOf(".")+1)];
		if (!ftype) ftype = "other";
	}
	var finfo = CONST_FORMAT[ftype];

	// Get all variable data
	var fwidth = width ? width + finfo.addwidth : 0;
	var fheight = height ? height + finfo.addheight : 0;
	var fparam = new Array();
	for (var k in CONST_DEFAULT_PARAM)
		fparam[k.toLowerCase()] = {name: k, value: CONST_DEFAULT_PARAM[k] };
	for (var k in finfo.param)
		fparam[k.toLowerCase()] = {name: k, value: finfo.param[k] };
	for (var k in paramarray)
		fparam[k.toLowerCase()] = {name: k, value: paramarray[k] };

	// Assemble HTML
	var html_size = (fwidth ? "width=\"" + fwidth + "\" " : "") + (fheight ? "height=\"" + fheight + "\"" : "")
	var html_playertype = finfo.playertype != "" ? "type=\"" + finfo.playertype + "\"" : "";
	var html_object = "<object\ndata=\"" + fileurl + "\"\nclassid=\"" + finfo.classid + "\"\ncodebase=\"" + finfo.codebase + "\"\n" + html_size + "\n" + html_playertype + "\nstandby=\"" + CONST_STANDBYTEXT + "\">";
	var html_embed = "<embed\n" + html_size + "\npluginspage=\"" + finfo.pluginspage + "\"\ntype=\"" + finfo.mediatype + "\"";
	for (var k in fparam) {
		var tparam = fparam[k];
    if (tparam.name !== undefined && tparam.value !== undefined) {
		  html_object += "\n<param name=\"" + tparam.name + "\" value=\"" + tparam.value + "\" />";
		  html_embed += "\n" + tparam.name.toLowerCase() + "=\"" + tparam.value + "\"";
    }
	}
	html_embed += ">\n</embed>";
	html_object += "\n" + html_embed + "\n</object>";

	// Output HTML
	document.write(html_object);
	//document.write("<pre>"+html_object.replace(/</g, "&lt;")+"</pre>");
}