diff --git a/src/embed.js b/src/embed.js
new file mode 100644
index 00000000..bf6eff58
--- /dev/null
+++ b/src/embed.js
@@ -0,0 +1,110 @@
+// add stuff to mistvideo object, if it doesn't exist yet
+if(!mistvideo.hasSupport || !mistvideo.buildPlayer)
+{
+   // return the current flash version
+   mistvideo.flashVersion = function()
+   {
+		var version = 0;
+
+		try
+		{
+			// check in the mimeTypes
+			version = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description.replace(/([^0-9\.])/g, '').split('.')[0];
+		}catch(e){}
+
+		try
+		{
+			// for our special friend IE
+			version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable("$version").replace(/([^0-9\,])/g, '').split(',')[0];
+		}catch(e){}
+
+		return version;
+   };
+
+   // what does the browser support - used in hasSupport()
+   mistvideo.supports =
+	{
+		flashversion: parseInt(mistvideo.flashVersion(), 10)
+	};
+
+   // return true if a type is supported
+   mistvideo.hasSupport = function(type)
+   {
+		switch(type)
+		{
+			case 'f4v':		return mistvideo.supports.flashversion >= 11;		break;
+			case 'rtmp':	return mistvideo.supports.flashversion >= 10;		break;
+			case 'flv':		return mistvideo.supports.flashversion >= 7;			break;
+
+			default:			return false;
+		}
+   };
+
+	// build HTML for certain kinds of types
+   mistvideo.buildPlayer = function(src, container, width, height)
+	{
+
+		cwidth = parseInt(container.style.width, 10);
+		cheight = parseInt(container.style.height, 10);
+
+		width = cwidth < width ? cwidth : width;
+		height = cheight < height ? cheight : height;
+
+		switch(src.type)
+		{
+			case 'f4v':
+			case 'rtmp':
+			case 'flv':
+				container.innerHTML = '<object width="' + width + '" height="' + height + '"><param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param><param name="flashvars" value="src=' + encodeURI(src.url) + '&controlBarMode=floating"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '" flashvars="src=' + encodeURI(src.url) + '&controlBarMode=floating"></embed></object>';
+			break;
+		}
+	};
+}
+
+
+
+var container = document.createElement('div'),
+    scripts = document.getElementsByTagName('script'),
+    me = scripts[scripts.length - 1];
+
+// create the container
+me.parentNode.insertBefore(container, me);
+// set the class to 'mistvideo'
+container.setAttribute('class', 'mistvideo');
+// remove script tag
+me.parentNode.removeChild(me);
+
+if(video.error)
+{
+   // there was an error; display it
+   container.innerHTML = ['<strong>Error: ', video.error, '</strong>'].join('');
+}else if(video.source.length < 1)
+{
+   // no stream sources
+   container.innerHTML = '<strong>Error: no streams found</strong>';
+}else{
+   // no error, and sources found. Check the video types and output the best
+   // available video player.
+   var i, video
+		 foundPlayer = false,
+		 len = video.source.length;
+
+   for(i = 0; i < len; i++)
+   {
+		if( mistvideo.hasSupport( video.source[i].type ) )
+		{
+			// we support this kind of video, so build it.
+			mistvideo.buildPlayer(video.source[i], container, video.width, video.height);
+
+			// we've build a player, so we're done here
+			foundPlayer = true;
+			break;   // break for() loop
+		}
+	}
+
+	if(!foundPlayer)
+	{
+		// of all the streams given, none was supported (eg. no flash and HTML5 video). Fall back.
+		container.innerHTML = 'fallback here';
+	}
+}