diff --git a/src/embed.js b/src/embed.js index be93c5a8..6247f9a4 100644 --- a/src/embed.js +++ b/src/embed.js @@ -1,115 +1,116 @@ -function mistembed(video) +function mistembed(streamname) { -// 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 = + // add stuff to mistvideo object, if it doesn't exist yet + if(!mistvideo.hasSupport || !mistvideo.buildPlayer) { - flashversion: parseInt(mistvideo.flashVersion(), 10) - }; - - // return true if a type is supported - mistvideo.hasSupport = function(type) - { - switch(type) + // return the current flash version + mistvideo.flashVersion = function() { - case 'f4v': return mistvideo.supports.flashversion >= 11; break; - case 'rtmp': return mistvideo.supports.flashversion >= 10; break; - case 'flv': return mistvideo.supports.flashversion >= 7; break; + var version = 0; - default: return false; - } - }; + try + { + // check in the mimeTypes + version = navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin.description.replace(/([^0-9\.])/g, '').split('.')[0]; + }catch(e){} - // build HTML for certain kinds of types - mistvideo.buildPlayer = function(src, container, width, height) + 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 = ''; + break; + } + }; + } + + + + var video = mistvideo[streamname], + 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 = ['Error: ', video.error, ''].join(''); + }else if(video.source.length < 1) + { + // no stream sources + container.innerHTML = 'Error: no streams found'; + }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; - 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) + for(i = 0; i < len; i++) { - case 'f4v': - case 'rtmp': - case 'flv': - container.innerHTML = ''; - break; + 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 + } } - }; -} - - -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 = ['Error: ', video.error, ''].join(''); -}else if(video.source.length < 1) -{ - // no stream sources - container.innerHTML = 'Error: no streams found'; -}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 ) ) + if(!foundPlayer) { - // 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 + // of all the streams given, none was supported (eg. no flash and HTML5 video). Fall back. + container.innerHTML = 'fallback here'; } } - if(!foundPlayer) - { - // of all the streams given, none was supported (eg. no flash and HTML5 video). Fall back. - container.innerHTML = 'fallback here'; - } -} - - }