summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/embed/Quicktime.xd.js
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo-1.6/dojox/embed/Quicktime.xd.js
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'js/dojo-1.6/dojox/embed/Quicktime.xd.js')
-rw-r--r--js/dojo-1.6/dojox/embed/Quicktime.xd.js278
1 files changed, 278 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/embed/Quicktime.xd.js b/js/dojo-1.6/dojox/embed/Quicktime.xd.js
new file mode 100644
index 0000000..f7c5e20
--- /dev/null
+++ b/js/dojo-1.6/dojox/embed/Quicktime.xd.js
@@ -0,0 +1,278 @@
+/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+dojo._xdResourceLoaded(function(dojo, dijit, dojox){
+return {depends: [["provide", "dojox.embed.Quicktime"]],
+defineResource: function(dojo, dijit, dojox){if(!dojo._hasResource["dojox.embed.Quicktime"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.embed.Quicktime"] = true;
+dojo.provide("dojox.embed.Quicktime");
+
+(function(d){
+ /*******************************************************
+ dojox.embed.Quicktime
+
+ Base functionality to insert a QuickTime movie
+ into a document on the fly.
+ ******************************************************/
+
+ var qtMarkup,
+ qtVersion = { major: 0, minor: 0, rev: 0 },
+ installed,
+ __def__ = {
+ width: 320,
+ height: 240,
+ redirect: null
+ },
+ keyBase = "dojox-embed-quicktime-",
+ keyCount = 0,
+ getQTMarkup = 'This content requires the <a href="http://www.apple.com/quicktime/download/" title="Download and install QuickTime.">QuickTime plugin</a>.';
+
+ // *** private methods *********************************************************
+ function prep(kwArgs){
+ kwArgs = d.mixin(d.clone(__def__), kwArgs || {});
+ if(!("path" in kwArgs) && !kwArgs.testing){
+ console.error("dojox.embed.Quicktime(ctor):: no path reference to a QuickTime movie was provided.");
+ return null;
+ }
+ if(kwArgs.testing){
+ kwArgs.path = "";
+ }
+ if(!("id" in kwArgs)){
+ kwArgs.id = keyBase + keyCount++;
+ }
+ return kwArgs;
+ }
+
+ if(d.isIE){
+ installed = (function(){
+ try{
+ var o = new ActiveXObject("QuickTimeCheckObject.QuickTimeCheck.1");
+ if(o!==undefined){
+ // pull the qt version too
+ var v = o.QuickTimeVersion.toString(16);
+ function p(i){ return (v.substring(i, i+1)-0) || 0; }
+ qtVersion = {
+ major: p(0),
+ minor: p(1),
+ rev: p(2)
+ };
+ return o.IsQuickTimeAvailable(0);
+ }
+ } catch(e){ }
+ return false;
+ })();
+
+ qtMarkup = function(kwArgs){
+ if(!installed){ return { id: null, markup: getQTMarkup }; }
+
+ kwArgs = prep(kwArgs);
+ if(!kwArgs){ return null; }
+ var s = '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" '
+ + 'codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0" '
+ + 'id="' + kwArgs.id + '" '
+ + 'width="' + kwArgs.width + '" '
+ + 'height="' + kwArgs.height + '">'
+ + '<param name="src" value="' + kwArgs.path + '"/>';
+ for(var p in kwArgs.params||{}){
+ s += '<param name="' + p + '" value="' + kwArgs.params[p] + '"/>';
+ }
+ s += '</object>';
+ return { id: kwArgs.id, markup: s };
+ }
+ } else {
+ installed = (function(){
+ for(var i=0, p=navigator.plugins, l=p.length; i<l; i++){
+ if(p[i].name.indexOf("QuickTime")>-1){
+ return true;
+ }
+ }
+ return false;
+ })();
+
+ qtMarkup = function(kwArgs){
+ if(!installed){ return { id: null, markup: getQTMarkup }; }
+
+ kwArgs = prep(kwArgs);
+ if(!kwArgs){ return null; }
+ var s = '<embed type="video/quicktime" src="' + kwArgs.path + '" '
+ + 'id="' + kwArgs.id + '" '
+ + 'name="' + kwArgs.id + '" '
+ + 'pluginspage="www.apple.com/quicktime/download" '
+ + 'enablejavascript="true" '
+ + 'width="' + kwArgs.width + '" '
+ + 'height="' + kwArgs.height + '"';
+ for(var p in kwArgs.params||{}){
+ s += ' ' + p + '="' + kwArgs.params[p] + '"';
+ }
+ s += '></embed>';
+ return { id: kwArgs.id, markup: s };
+ }
+ }
+
+ /*=====
+ dojox.embed.__QTArgs = function(path, id, width, height, params, redirect){
+ // path: String
+ // The URL of the movie to embed.
+ // id: String?
+ // A unique key that will be used as the id of the created markup. If you don't
+ // provide this, a unique key will be generated.
+ // width: Number?
+ // The width of the embedded movie; the default value is 320px.
+ // height: Number?
+ // The height of the embedded movie; the default value is 240px
+ // params: Object?
+ // A set of key/value pairs that you want to define in the resultant markup.
+ // redirect: String?
+ // A url to redirect the browser to if the current QuickTime version is not supported.
+ this.id=id;
+ this.path=path;
+ this.width=width;
+ this.height=height;
+ this.params=params;
+ this.redirect=redirect;
+ }
+ =====*/
+
+ dojox.embed.Quicktime=function(/* dojox.embed.__QTArgs */kwArgs, /* DOMNode */node){
+ // summary:
+ // Returns a reference to the HTMLObject/HTMLEmbed that is created to
+ // place the movie in the document. You can use this either with or
+ // without the new operator. Note that with any other DOM manipulation,
+ // you must wait until the document is finished loading before trying
+ // to use this.
+ //
+ // example:
+ // Embed a QuickTime movie in a document using the new operator, and get a reference to it.
+ // | var movie = new dojox.embed.Quicktime({
+ // | path: "path/to/my/movie.mov",
+ // | width: 400,
+ // | height: 300
+ // | }, myWrapperNode);
+ //
+ // example:
+ // Embed a movie in a document without using the new operator.
+ // | var movie = dojox.embed.Quicktime({
+ // | path: "path/to/my/movie.mov",
+ // | width: 400,
+ // | height: 300
+ // | }, myWrapperNode);
+
+ return dojox.embed.Quicktime.place(kwArgs, node); // HTMLObject
+ };
+
+ d.mixin(dojox.embed.Quicktime, {
+ // summary:
+ // A singleton object used internally to get information
+ // about the QuickTime player available in a browser, and
+ // as the factory for generating and placing markup in a
+ // document.
+ //
+ // minSupported: Number
+ // The minimum supported version of the QuickTime Player, defaults to
+ // 6.
+ // available: Boolean
+ // Whether or not QuickTime is available.
+ // supported: Boolean
+ // Whether or not the QuickTime Player installed is supported by
+ // dojox.embed.
+ // version: Object
+ // The version of the installed QuickTime Player; takes the form of
+ // { major, minor, rev }. To get the major version, you'd do this:
+ // var v=dojox.embed.Quicktime.version.major;
+ // initialized: Boolean
+ // Whether or not the QuickTime engine is available for use.
+ // onInitialize: Function
+ // A stub you can connect to if you are looking to fire code when the
+ // engine becomes available. A note: do NOT use this stub to embed
+ // a movie in your document; this WILL be fired before DOMContentLoaded
+ // is fired, and you will get an error. You should use dojo.addOnLoad
+ // to place your movie instead.
+
+ minSupported: 6,
+ available: installed,
+ supported: installed,
+ version: qtVersion,
+ initialized: false,
+ onInitialize: function(){
+ dojox.embed.Quicktime.initialized = true;
+ }, // stub function to let you know when this is ready
+
+ place: function(kwArgs, node){
+ var o = qtMarkup(kwArgs);
+
+ if(!(node = d.byId(node))){
+ node=d.create("div", { id:o.id+"-container" }, d.body());
+ }
+
+ if(o){
+ node.innerHTML = o.markup;
+ if(o.id){
+ return d.isIE? d.byId(o.id) : document[o.id]; // QuickTimeObject
+ }
+ }
+ return null; // QuickTimeObject
+ }
+ });
+
+ // go get the info
+ if(!d.isIE){
+ var id = "-qt-version-test",
+ o = qtMarkup({ testing:true , width:4, height:4 }),
+ c = 10, // counter to prevent infinite looping
+ top = "-1000px",
+ widthHeight = "1px";
+
+ function getVer(){
+ setTimeout(function(){
+ var qt = document[o.id],
+ n = d.byId(id);
+
+ if(qt){
+ try{
+ var v = qt.GetQuickTimeVersion().split(".");
+ dojox.embed.Quicktime.version = { major: parseInt(v[0]||0), minor: parseInt(v[1]||0), rev: parseInt(v[2]||0) };
+ if(dojox.embed.Quicktime.supported = v[0]){
+ dojox.embed.Quicktime.onInitialize();
+ }
+ c = 0;
+ } catch(e){
+ if(c--){
+ getVer();
+ }
+ }
+ }
+
+ if(!c && n){ d.destroy(n); }
+ }, 20);
+ }
+
+ if(d._initFired){
+ // if onload has already fired, then body is available and we can create a new node
+ d.create("div", {
+ innerHTML: o.markup,
+ id: id,
+ style: { top:top, left:0, width:widthHeight, height:widthHeight, overflow:"hidden", position:"absolute" }
+ }, d.body());
+ }else{
+ // body isn't loaded yet, so we need to document.write the QuickTime markup
+ document.write(
+ '<div style="top:'+top+';left:0;width:'+widthHeight+';height:'+widthHeight+';overflow:hidden;position:absolute" id="' + id + '">'
+ + o.markup
+ + '</div>');
+ }
+ getVer();
+ }else if(d.isIE && installed){
+ // we already know if IE has QuickTime installed, but we need this to seem like a callback.
+ setTimeout(function(){
+ dojox.embed.Quicktime.onInitialize();
+ }, 10);
+ }
+})(dojo);
+
+}
+
+}};});