summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/embed/Object.js
blob: 029a4dc97eac05074c2bda0e2d2d408342889409 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//>>built
define("dojox/embed/Object", [
	"dojo/_base/kernel",
	"dojo/_base/declare",	// dojo.declare
	"dojo/dom-geometry",
	"dijit/_Widget",
	"./Flash",
	"./Quicktime"
], function (dojo, declare, domGeometry, _Widget, Flash, Quicktime) {
dojo.experimental("dojox.embed.Object");

return dojo.declare("dojox.embed.Object", _Widget, {
	//	summary:
	//		A widget you can use to embed either a Flash or Quicktime
	//		movie.
	//
	//	example:
	//	From markup:
	//	|	<div dojoType="dojox.embed.Object" src="path/to/movie.swf"></div>
	//
	//	example:
	//	Programmatic:
	//	|	var mov=new dojox.embed.Object({
	//	|		src: "path/to/movie.swf"
	//	|	}, node);
	//
	//	width: Number?
	//		The width of the movie. If not provided, the width of this.domNode is used.
	//	height: Number?
	//		The height of the movie. If not provided, the height of this.domNode is used.
	//	src: String
	//		The URL of the movie to embed.
	//	movie: HTMLEmbed
	//		The eventual reference to the movie embedded.  If you are looking to script
	//		control over the movie, you'd access it this way.
	//	params: Object
	//		A property bag that is created postCreate.  Any additional attributes you
	//		define on your domNode will be collected and placed into this, which will
	//		then be passed to the movie constructor.
	//	reFlash: RegExp
	//		Expression used on the src property to determine if this is Flash or Quicktime.
	//	reQtMovie: RegExp
	//		Expression used on the src property to determine if this is Flash or Quicktime.
	//	reQtAudio: RegExp
	//		Expression used on the src property to determine if this is Flash or Quicktime.
	
	width: 0,
	height: 0,
	src: "",
	movie: null,
	params: null,

	reFlash: /\.swf|\.flv/gi,
	reQtMovie: /\.3gp|\.avi|\.m4v|\.mov|\.mp4|\.mpg|\.mpeg|\.qt/gi,
	reQtAudio:/\.aiff|\.aif|\.m4a|\.m4b|\.m4p|\.midi|\.mid|\.mp3|\.mpa|\.wav/gi,
	
	postCreate: function(){
		//	summary
		//		Constructs the movie and places it in the document.
		if(!this.width || !this.height){
			//	get the width and height from the domNode
			var box=domGeometry.getMarginBox(this.domNode);
			this.width=box.w, this.height=box.h;
		}

		//	the default embed constructor.
		var em=Flash;

		//	figure out what kind of movie this is.
		if(this.src.match(this.reQtMovie) || this.src.match(this.reQtAudio)){
			em=Quicktime;
		}

		//	loop through any attributes and set up our params object.
		if(!this.params){
			this.params={};
			if(this.domNode.hasAttributes()){
				// ignore list
				var ignore = {
					dojoType: "",
					width: "",
					height: "",
					"class": "",
					style: "",
					id: "",
					src: ""
				};

				var attrs=this.domNode.attributes;
				for(var i=0, l=attrs.length; i<l; i++){
					if(!ignore[attrs[i].name]){
						this.params[attrs[i].name]=attrs[i].value;
					}
				}
			}
		}

		//	set up our arguments.
		var kwArgs={
			path: this.src,
			width: this.width,
			height: this.height,
			params: this.params
		};

		//	set up the movie.
		this.movie=new (em)(kwArgs, this.domNode);
	}
});
});