﻿/* * This file contains functions to generate OBJECT and EMBED tags for Flash content.  *//************** LOCALIZABLE GLOBAL VARIABLES ****************/var gArgCountErr =	'The "%%" function requires an even number of arguments.'				+	'\nArguments should be in the form "atttributeName", "attributeValue", ...';/******************** END LOCALIZABLE **********************/var gTagAttrs				= null;var gFlashGeneratorVersion		= 1.0;function flashObj_FlashVersion()	{ return gFlashGeneratorVersion; }function _FlashComplain(callingFcnName, errMsg){    errMsg = errMsg.replace("%%", callingFcnName);	alert(errMsg);}function _FlashAddAttribute(prefix, slotName, tagName){	var		value;	value = gTagAttrs[prefix + slotName];	if ( null == value )		value = gTagAttrs[slotName];	if ( null != value )	{		if ( 0 == slotName.indexOf(prefix) && (null == tagName) )			tagName = slotName.substring(prefix.length); 		if ( null == tagName ) 			tagName = slotName;		return tagName + '="' + value + '" ';	}	else		return "";}function _FlashAddObjectAttr(slotName, tagName){	// don't bother if it is only for the embed tag	if ( 0 == slotName.indexOf("emb#") )		return "";	if ( 0 == slotName.indexOf("obj#") && (null == tagName) )		tagName = slotName.substring(4); 	return _FlashAddAttribute("obj#", slotName, tagName);}function _FlashAddEmbedAttr(slotName, tagName){	// don't bother if it is only for the object tag	if ( 0 == slotName.indexOf("obj#") )		return "";	if ( 0 == slotName.indexOf("emb#") && (null == tagName) )		tagName = slotName.substring(4); 	return _FlashAddAttribute("emb#", slotName, tagName);}function _FlashAddObjectParam(slotName, generateXHTML){	var		paramValue;	var		paramStr = "";	var		endTagChar = (generateXHTML) ? ' />' : '>';	if ( -1 == slotName.indexOf("emb#") )	{		// look for the OBJECT-only param first. if there is none, look for a generic one		paramValue = gTagAttrs["obj#" + slotName];		if ( null == paramValue )			paramValue = gTagAttrs[slotName];		if ( 0 == slotName.indexOf("obj#") )			slotName = slotName.substring(4); 			if ( null != paramValue )			paramStr = '  <param name="' + slotName + '" value="' + paramValue + '"' + endTagChar + '\n';	}	return paramStr;}function _FlashDeleteTagAttrs(){	for ( var ndx = 0; ndx < arguments.length; ndx++ )	{		var attrName = arguments[ndx];		delete gTagAttrs[attrName];		delete gTagAttrs["emb#" + attrName];		delete gTagAttrs["obj#" + attrName];	}}		// generate an embed and object tag, return as a stringfunction _FlashGenerate(callingFcnName, generateXHTML, args){	// is the number of optional arguments even?	if ( args.length < 4 || (0 != (args.length % 2)) )	{		_FlashComplain(callingFcnName, gArgCountErr);		return "";	}		// allocate an array, fill in the required attributes with fixed place params and defaults	gTagAttrs = new Array();	gTagAttrs["src"] = args[0];	gTagAttrs["width"] = args[1];	gTagAttrs["height"] = args[2];	gTagAttrs["classid"] = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000";	gTagAttrs["pluginspage"] = "http://www.macromedia.com/go/getflashplayer";	// set up codebase attribute with specified or default version before parsing args so	//  anything passed in will override	var activexVers = args[3]	if ( (null == activexVers) || ("" == activexVers) )		activexVers = "7,0,0,0";	gTagAttrs["codebase"] = "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=" + activexVers;	var	attrName,		attrValue;	// add all of the optional attributes to the array	for ( var ndx = 4; ndx < args.length; ndx += 2)	{		attrName = args[ndx].toLowerCase();		attrValue = args[ndx + 1];		// "name" and "id" should have the same value, the former goes in the embed and the later goes in		//  the object. use one array slot 		if ( "name" == attrName || "id" == attrName )			gTagAttrs["name"] = attrValue;		else 			gTagAttrs[attrName] = attrValue;	}	// init both tags with the required and "special" attributes	var objTag =  '<object '					+ _FlashAddObjectAttr("classid")					+ _FlashAddObjectAttr("width")					+ _FlashAddObjectAttr("height")					+ _FlashAddObjectAttr("codebase")					+ _FlashAddObjectAttr("name", "id")					+ _FlashAddObjectAttr("tabindex")					+ _FlashAddObjectAttr("hspace")					+ _FlashAddObjectAttr("vspace")					+ _FlashAddObjectAttr("border")					+ _FlashAddObjectAttr("align")					+ _FlashAddObjectAttr("class")					+ _FlashAddObjectAttr("title")					+ _FlashAddObjectAttr("accesskey")					+ _FlashAddObjectAttr("noexternaldata")					+ '>\n'					+ _FlashAddObjectParam("src", generateXHTML);	var embedTag = '  <embed '					+ _FlashAddEmbedAttr("src")					+ _FlashAddEmbedAttr("width")					+ _FlashAddEmbedAttr("height")					+ _FlashAddEmbedAttr("pluginspage")					+ _FlashAddEmbedAttr("name")					+ _FlashAddEmbedAttr("align")					+ _FlashAddEmbedAttr("tabindex");	// delete the attributes/params we have already added	_FlashDeleteTagAttrs("src","width","height","pluginspage","classid","codebase","name","tabindex",					"hspace","vspace","border","align","noexternaldata","class","title","accesskey");	// and finally, add all of the remaining attributes to the embed and object	for ( var attrName in gTagAttrs )	{		attrValue = gTagAttrs[attrName];		if ( null != attrValue )		{			embedTag += _FlashAddEmbedAttr(attrName);			objTag += _FlashAddObjectParam(attrName, generateXHTML);		}	} 	// end both tags, we're done	return objTag + embedTag + '> </em' + 'bed>\n</ob' + 'ject' + '>';}// return the object/embed as a stringfunction Flash_GenerateOBJECTText(){	return _FlashGenerate("Flash_GenerateOBJECTText", false, arguments);}function Flash_GenerateOBJECTText_XHTML(){	return _FlashGenerate("Flash_GenerateOBJECTText_XHTML", true, arguments);}function Flash_WriteOBJECT(){	document.writeln(_FlashGenerate("Flash_WriteOBJECT", false, arguments));}function Flash_WriteOBJECT_XHTML(){	document.writeln(_FlashGenerate("Flash_WriteOBJECT_XHTML", true, arguments));}
