1/*��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 OBJ
1ECT-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;� }�� 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 Object();� 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")� + '>'� + _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></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));�}���
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.