/** 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));}
