var _____WB$wombat$assign$function_____=function(name){return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name))||self[name];};if(!self.__WB_pmw){self.__WB_pmw=function(obj){this.__WB_source=obj;return this;}}{ let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opens = _____WB$wombat$assign$function_____("opens"); /* * GovVid object, developed by the Dutch Ministry of Health, Welfare and Sport and 'Werkgroep Stijlgids' of the New Media Commission (CNM) * inspired on: * - swfobject (http://blog.deconcept.com/swfobject/) * - GTObject (http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/) * * Authors: Marc Gerritsen (m.gerritsen@minvws.nl) and Michael Wijnakker (m.wijnakker@minvws.nl) * Version: 0.8 (22-07-2008) * Works on: Internet Explorer 6/7, Firefox 1.5/2/3, Safari 2/3, Opera 9 * Description: Can detect flash version and sees if Quicktime is installed * Generates correct HTML for embedded movie and audio * Can replace a HTML element with the movie/audio html * * * Usage: * myMovie = new GovVid("id", width, height); * myMovie.addMovie("filename"); // supports mov, mp4, wmv, flv, smil * mymovie.addImage("filename"); // adds start image for flv player, only for movies * for flv use path from flvplayer file * myMovie.addCaption("flv","filename"); //adds caption file for flv player, only for movies * myMovie.addAudio("filename"); //supports mp3, can display single mp3 file without movie, or add mp3 as audio description for flvmovie * myMovie.write("htmlelementid"); // script puts movie html inside html element * * Changes: * (5-11-2007) - added movieObject.addFlashVars("usecaptions","false"); on line 149 * (11-12-2007) - added addAudio function for adding mp3 files * - changed function names to prevent problems when using javascript frameworks like prototype.js * - replaced Flvplayer for Mediaplayer from Jeroen Wijering (can also play single mp3 files) * (22-07-2007) - Changed innerHTML for correct DOM scripting. * - added support for embedded smil (so you can use mp4/mov with captions in the quicktime player ) */ // change these filenames if you want to use different files // leave empty if you don't need asp files var contentDispositionFile = "/download"; var statisticsFile = ""; var mediaplayerFile = "/flash/mediaplayer.swf"; var govvidOpera = window.opera ? true : false; var govvidIE = (document.all && document.getElementById && !govvidOpera) ? true : false; var govvidSafari = (navigator.userAgent.toLowerCase().indexOf('safari') >= 0) ? true : false; var debug = false; var arFileTypes = new Array(); arFileTypes["jwmedia"] = new Array("flv","mp3"); arFileTypes["quicktime"] = new Array("smil","mp4", "mov","mp3"); arFileTypes["winmedia"] = new Array("wmv","mp3","wma"); //GovVid object GovVid = function(id, width, height) { this.id = id; this.width = width; this.height = height; this.movies = new Object(); this.audioFiles = new Object(); this.captions = new Object(); this.image = ""; } //add movie function, adds movie to object, myMovie.addMovie("filename"); GovVid.prototype.addMovie = function(filename) { var temp = filename.split("/"); var thefile = temp[temp.length - 1]; var file = thefile.split("."); var type = file[file.length - 1]; this.movies[type] = filename; } //add movie function, adds movie to object, myMovie.addMovie("filename"); GovVid.prototype.addAudio = function(filename) { var temp = filename.split("/"); var thefile = temp[temp.length - 1]; var file = thefile.split("."); var type = file[file.length - 1]; this.audioFiles[type] = filename; } //adds image to object, myMovie.addImage("filename"); GovVid.prototype.addImage = function(filename) { this.image = filename; } //adds caption to object, myMovie.addCaption("flv","filename"); GovVid.prototype.addCaption = function(type, filename) { this.captions[type] = filename; } GovVid.prototype.inArray = function (needleArray,haystackArray) { var key; var key2; for(key in haystackArray) for(key2 in needleArray) if(key == needleArray[key2]) return key; return false; } //writes correct movie to html element GovVid.prototype.write = function(elementid, movietype) { movietype = typeof(movietype) != 'undefined' ? movietype : "choose"; //get element with id var element = document.getElementById(elementid); if (element && movietype == "choose") { //set with to parentnode - TODO: maybe only on li elements element.parentNode.style.width = parseInt(this.width) + "px"; GovVid_makeListToggle(elementid); } else if (movietype != "choose") { //delete vieuwCaptions element if exists var viewCap = document.getElementById('govvid_viewwithcaptions'); if(viewCap) viewCap.parentNode.removeChild(viewCap); } var display = false; var version = GovVid_getFlashPlayerVersion(); var height; var testarray = new Array(); if(version.major > 7 && (movietype == "choose" || GovVid_in_array(arFileTypes["jwmedia"],movietype))) { if(mediaplayerFile == undefined || mediaplayerFile == "") { alert("voor het afspelen met de flash plugin, is de jwmediaplayer vereist.\n vul de variable mediaplayerFile met de juiste waarde."); return false; } height = parseInt(this.height) + 20; if(display = this.inArray(arFileTypes["jwmedia"],this.movies)) { var movieObject = new GovVidMovie(mediaplayerFile, this.id, this.width, height); movieObject.addFlashVars("autostart", "false"); // set image if there is a image defined if(this.image != "") movieObject.addFlashVars("image", this.image); // set caption if there is caption if (this.captions["flv"] != undefined) movieObject.addFlashVars("captions", this.captions["flv"]); if (this.audioFiles["mp3"] != undefined) movieObject.addFlashVars("audio", this.audioFiles["mp3"]); movieObject.addFlashVars("usecaptions","false"); movieObject.addFlashVars("overstretch","false"); movieObject.addFlashVars("file", this.movies[display]); //path from flash file location if(statisticsFile != undefined && statisticsFile != "") { movieObject.addFlashVars("callback",statisticsFile); movieObject.addFlashVars("logevents",statisticsFile); } movieObject.addFlashVars("showdigits","total"); movieObject.addFlashVars("showbuttons","true"); movieObject.addFlashVars("showstop","true"); movieObject.addFlashVars("bufferlength","5"); movieObject.addFlashVars("backcolor","0x000000"); movieObject.addFlashVars("frontcolor","0xFFFFFF"); movieObject.addFlashVars("lightcolor","0xFFFFFF"); movieObject.showMovie(elementid,"flash"); //element.innerHTML = movieObject.getFlashHTML(); return true; } else if(display = this.inArray(arFileTypes["jwmedia"],this.audioFiles)) { var audioObject = new GovVidMovie(mediaplayerFile, this.id, this.width, height); audioObject.addFlashVars("file", this.audioFiles[display]); //path from flash file location if(statisticsFile != undefined && statisticsFile != "") { audioObject.addFlashVars("callback",statisticsFile); audioObject.addFlashVars("logevents",statisticsFile); } audioObject.addFlashVars("showdigits","total"); audioObject.addFlashVars("showbuttons","true"); audioObject.addFlashVars("showstop","true"); audioObject.addFlashVars("bufferlength","5"); audioObject.addFlashVars("backcolor","0x000000"); audioObject.addFlashVars("frontcolor","0xFFFFFF"); audioObject.addFlashVars("lightcolor","0xFFFFFF"); audioObject.showMovie(elementid,"flash"); return true; } } if(!GovVid_isQTInstalled() && GovVid_in_array(arFileTypes["quicktime"],movietype)) alert("Geen instalatie van quicktime gevonden."); if (GovVid_isQTInstalled() && !display && (movietype == "choose" || GovVid_in_array(arFileTypes["quicktime"],movietype))) { // Toon quicktime height = parseInt(this.height) + 16; if(movietype != "choose") display = movietype; else display = this.inArray(arFileTypes["quicktime"],this.movies); if(display) { if(display == "smil") height = parseInt(this.height) + 115; var movieObject = new GovVidMovie(this.movies[display], this.id, this.width, height); } else if(display = this.inArray(arFileTypes["quicktime"],this.audioFiles)) { var movieObject = new GovVidMovie(this.audioFiles[display], this.id, this.width, height); } if (movieObject) { movieObject.showMovie(elementid, "quicktime"); return true } } if (!display && (movietype == "choose" || GovVid_in_array(arFileTypes["winmedia"],movietype))) { // Toon windows media player height = parseInt(this.height) + 46; if(display = this.inArray(arFileTypes["winmedia"],this.movies)) { var movieObject = new GovVidMovie(this.movies[display], this.id, this.width, height); } else if(display = this.inArray(arFileTypes["winmedia"],this.audioFiles)) { var movieObject = new GovVidMovie(this.audioFiles[display], this.id, this.width, height); } if (movieObject) { movieObject.showMovie(elementid, "winmedia"); if(this.movies["asx"]) { //add link GovVid_addLinkToList(element, this.movies["asx"], "Bekijk deze video met ondertiteling"); } return true; } } return false; } // movie object and functions GovVidMovie = function(filename, id, width, height) { this.filename = filename; this.id = id; this.width = width; this.height = height; this.flashvars = new Object(); }; // function to add flash variables to object GovVidMovie.prototype.addFlashVars = function(name, value) { this.flashvars[name] = value; } // function that is used by other functions GovVidMovie.prototype.getFlashVars = function() { return this.flashvars; } /* * HTML generator functions * * */ // adds a param tag GovVidMovie.prototype.insertParamTag = function(objEl, strName, strValue) { var objParam = document.createElement("PARAM"); objParam.setAttribute('name', strName); objParam.setAttribute('value', strValue); objEl.appendChild(objParam); } // function that generates quicktime html GovVidMovie.prototype.getQuicktimeHTML = function() { // IE cannot handle adding type attribute with setAttribute if (govvidIE) { var objObject = document.createElement(""); } else { var objObject = document.createElement("object"); objObject.setAttribute('type', 'video/quicktime'); } objObject.setAttribute('id', this.id); objObject.setAttribute('width', this.width); objObject.setAttribute('height', this.height); if(govvidIE || govvidSafari) this.insertParamTag(objObject, 'src', this.filename); else objObject.setAttribute('data', this.filename); this.insertParamTag(objObject, 'autoplay', 'false'); return objObject; } // function that generates windows media player html GovVidMovie.prototype.getWinmediaHTML = function() { // IE cannot handle adding type attribute with setAttribute if(govvidIE) objObject = document.createElement(""); else { var objObject = document.createElement("object"); objObject.setAttribute('type', 'video/x-ms-wmv'); } objObject.setAttribute('id', this.id); objObject.setAttribute('width', this.width); objObject.setAttribute('height', this.height); if(govvidIE || govvidSafari || govvidOpera) this.insertParamTag(objObject, 'src', this.filename); else objObject.setAttribute('data', this.filename); this.insertParamTag(objObject, 'autostart', '0'); return objObject; } // function that generates flash html, different for ie or navigator browsers GovVidMovie.prototype.getFlashHTML = function() { var flashVars = ""; // do flashvars if(this.flashvars) for (var param in this.getFlashVars()) flashVars += param + '=' + this.flashvars[param] + '&'; // IE cannot handle adding type attribute with setAttribute if(govvidIE) var objObject = document.createElement(""); else { var objObject = document.createElement("object"); objObject.setAttribute('type', 'application/x-shockwave-flash'); } objObject.setAttribute('id', this.id); objObject.setAttribute('width', this.width); objObject.setAttribute('height', this.height); if(govvidIE || govvidSafari) this.insertParamTag(objObject, 'src', this.filename); else objObject.setAttribute('data', this.filename); this.insertParamTag(objObject, 'flashvars', flashVars); this.insertParamTag(objObject, 'allowfullscreen', 'true'); return objObject; } // replace element with movie html, the get+movie+HTML functions GovVidMovie.prototype.showMovie = function(elementID, filetype) { var element = document.getElementById(elementID); if(filetype == 'flash') { element = GovVid_EmptyNode(element); element.appendChild(this.getFlashHTML()); } else if (filetype == 'quicktime') { element = GovVid_EmptyNode(element); element.appendChild(this.getQuicktimeHTML()); } else if (filetype == 'winmedia') { element = GovVid_EmptyNode(element); element.appendChild(this.getWinmediaHTML()); } } /* * Detector functions * * */ // Function gets flashplayer version, if flash is not installed it returns major:0 minor:0 revision:0 function GovVid_getFlashPlayerVersion(){ var version = new FlashPlayerVersion([0,0,0]); if(navigator.plugins && navigator.mimeTypes.length){ var x=navigator.plugins["Shockwave Flash"]; if(x && x.description) version = new FlashPlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split(".")); } else { try { var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch(e) { try { var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); version = new FlashPlayerVersion([6,0,21]); axo.AllowScriptAccess="always"; } catch(e){ if(version.major==6){return version;} } try { axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch(e){} } if(axo!=null) version=new FlashPlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); } return version; }; // object used by the getFlashPlayerVersion function FlashPlayerVersion = function(player){ this.major = player[0]!=null?parseInt(player[0]):0; this.minor = player[1]!=null?parseInt(player[1]):0; this.rev = player[2]!=null?parseInt(player[2]):0; }; // function checks if quicktime is installed function GovVid_isQTInstalled() { var qtInstalled = false; var qtObj = false; if (navigator.plugins && navigator.plugins.length) { var navigatorLength = navigator.plugins.length; for (var i=0; i < navigatorLength; i++ ) { var plugin = navigator.plugins[i]; if (plugin.name.indexOf("QuickTime") > -1) qtInstalled = true; } } else { if (window.ActiveXObject) { var control = null; try { control = new ActiveXObject('QuickTime.QuickTime'); } catch (e) { // Do nothing } if (control) // In case QuickTimeCheckObject.QuickTimeCheck does not exist qtInstalled = true; } else alert("no active X"); } return qtInstalled; } /* * General functions / html functions * * */ // function hides or shows an element with stylesheet classes function GovVid_toggle(objid) { var el = document.getElementById(objid); if ( el.className == 'close' ) el.className = 'open'; else el.className = 'close'; } // function hides or shows an element with stylesheet classes function GovVid_toggle_both(objid) { var strMenu = objid.replace(/ToggleLink/,"ToggleMenu"); var strLink = objid.replace(/ToggleMenu/,"ToggleLink"); GovVid_toggle(strMenu); GovVid_toggle(strLink); } // removes all childnodes from a node function GovVid_EmptyNode(objNode) { for(var i = objNode.childNodes.length-1; i >= 0; i--) objNode.removeChild(objNode.childNodes[i]); return objNode; } // do stuff with links to binary files (not needed for pilot video files) function GovVid_openBinary() { if(contentDispositionFile != undefined && contentDispositionFile != "") { var filetypes = new Array("pdf", "wmv", "mov", "mp4", "flv", "3gp","mp3", "srt"); var myAnchors = document.getElementsByTagName('a'); var myAnchorsLength = myAnchors.length; var baseUrl = new String(document.location); var splitUrl = baseUrl.split("/"); var strBase = ""; if(baseUrl.indexOf("http://") == 0 && splitUrl.length > 2) strBase = "http://" + splitUrl[2]; for (i=0; i