aboutsummaryrefslogtreecommitdiff
path: root/AC_QuickTime.js
diff options
context:
space:
mode:
Diffstat (limited to 'AC_QuickTime.js')
-rw-r--r--AC_QuickTime.js263
1 files changed, 263 insertions, 0 deletions
diff --git a/AC_QuickTime.js b/AC_QuickTime.js
new file mode 100644
index 0000000..998d42c
--- /dev/null
+++ b/AC_QuickTime.js
@@ -0,0 +1,263 @@
+/*
+
+File: AC_QuickTime.js
+
+Abstract: This file contains functions to generate OBJECT and EMBED tags for QuickTime content.
+
+Version: <1.1>
+
+Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
+Computer, Inc. ("Apple") in consideration of your agreement to the
+following terms, and your use, installation, modification or
+redistribution of this Apple software constitutes acceptance of these
+terms. If you do not agree with these terms, please do not use,
+install, modify or redistribute this Apple software.
+
+In consideration of your agreement to abide by the following terms, and
+subject to these terms, Apple grants you a personal, non-exclusive
+license, under Apple's copyrights in this original Apple software (the
+"Apple Software"), to use, reproduce, modify and redistribute the Apple
+Software, with or without modifications, in source and/or binary forms;
+provided that if you redistribute the Apple Software in its entirety and
+without modifications, you must retain this notice and the following
+text and disclaimers in all such redistributions of the Apple Software.
+Neither the name, trademarks, service marks or logos of Apple Computer,
+Inc. may be used to endorse or promote products derived from the Apple
+Software without specific prior written permission from Apple. Except
+as expressly stated in this notice, no other rights or licenses, express
+or implied, are granted by Apple herein, including but not limited to
+any patent rights that may be infringed by your derivative works or by
+other works in which the Apple Software may be incorporated.
+
+The Apple Software is provided by Apple on an "AS IS" basis. APPLE
+MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
+THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
+OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
+MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
+AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
+STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+Copyright © 2006 Apple Computer, Inc., All Rights Reserved
+
+*/
+
+/*
+ * 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";
+ //Impportant note: It is recommended that you use this exact classid in order to ensure a seamless experience for all viewers
+ 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));
+}