/* * This file contains functions to generate OBJECT and EMBED tags for QuickTime 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 gQTGeneratorVersion = 1.0;
function AC_QuickTimeVersion()	{
return gQTGeneratorVersion;
}
function _QTComplain(callingFcnName, errMsg){
errMsg = errMsg.replace("%%", callingFcnName);
alert(errMsg);
}
function _QTAddAttribute(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 _QTAddObjectAttr(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 _QTAddAttribute("obj#", slotName, tagName);
}
function _QTAddEmbedAttr(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 _QTAddAttribute("emb#", slotName, tagName);
}
function _QTAddObjectParam(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 _QTDeleteTagAttrs(){
	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 _QTGenerate(callingFcnName, generateXHTML, args){
// is the number of optional arguments even?
if ( args.length < 4 || (0 != (args.length % 2)) )	{
	_QTComplain(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:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
gTagAttrs["pluginspage"] = "http://www.apple.com/quicktime/download/";
// 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 = "6,0,2,0";
gTagAttrs["codebase"] = "http://www.apple.com/qtactivex/qtplugin.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 ' + _QTAddObjectAttr("classid") + _QTAddObjectAttr("width") + _QTAddObjectAttr("height") + _QTAddObjectAttr("codebase") + _QTAddObjectAttr("name", "id") + _QTAddObjectAttr("tabindex") + _QTAddObjectAttr("hspace") + _QTAddObjectAttr("vspace") + _QTAddObjectAttr("border") + _QTAddObjectAttr("align") + _QTAddObjectAttr("class") + _QTAddObjectAttr("title") + _QTAddObjectAttr("accesskey") + _QTAddObjectAttr("noexternaldata") + '>\n' + _QTAddObjectParam("src", generateXHTML);
var embedTag = '  <embed ' + _QTAddEmbedAttr("src") + _QTAddEmbedAttr("width") + _QTAddEmbedAttr("height") + _QTAddEmbedAttr("pluginspage") + _QTAddEmbedAttr("name") + _QTAddEmbedAttr("align") + _QTAddEmbedAttr("tabindex");
// delete the attributes/params we have already added
_QTDeleteTagAttrs("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 += _QTAddEmbedAttr(attrName);
			objTag += _QTAddObjectParam(attrName, generateXHTML);
		}
	}
	// end both tags, we're done
	return objTag + embedTag + '> </em' + 'bed>\n</ob' + 'ject' + '>';
}
// return the object/embed as a string
function QT_GenerateOBJECTText(){
	return _QTGenerate("QT_GenerateOBJECTText", false, arguments);
}
function QT_GenerateOBJECTText_XHTML(){
	return _QTGenerate("QT_GenerateOBJECTText_XHTML", true, arguments);
}
function QT_WriteOBJECT(){
	document.writeln(_QTGenerate("QT_WriteOBJECT", false, arguments));
}
function QT_WriteOBJECT_XHTML(){
	document.writeln(_QTGenerate("QT_WriteOBJECT_XHTML", true, arguments));
}
