/** 
* flashembed 0.31. Adobe Flash embedding script
* 
* http://flowplayer.org/tools/flash-embed.html
*
* Copyright (c) 2008 Tero Piirainen (tipiirai@gmail.com)
*
* Released under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
* 
* >> Basically you can do anything you want but leave this header as is <<
*
* version 0.01 - 03/11/2008 
* version 0.31 - Tue Jul 22 2008 06:30:31 GMT+0200 (GMT+02:00)
*/
function flashembed(root, userParams, flashvars) { function getHTML() { var html = ""; if (typeof flashvars == 'function') { flashvars = flashvars(); } if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { html = '<embed type="application/x-shockwave-flash" '; if (params.id) { extend(params, { name: params.id }); } for (var key in params) { if (params[key] !== null) { html += [key] + '="' + params[key] + '"\n\t'; } } if (flashvars) { html += 'flashvars=\'' + concatVars(flashvars) + '\''; } html += '/>'; } else { html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '; html += 'width="' + params.width + '" height="' + params.height + '"'; if (!params.id && document.all) { params.id = "_" + ("" + Math.random()).substring(5); } if (params.id) { html += ' id="' + params.id + '"'; } html += '>'; html += '\n\t<param name="movie" value="' + params.src + '" />'; params.id = params.src = params.width = params.height = null; for (var k in params) { if (params[k] !== null) { html += '\n\t<param name="' + k + '" value="' + params[k] + '" />'; } } if (flashvars) { html += '\n\t<param name="flashvars" value=\'' + concatVars(flashvars) + '\' />'; } html += "</object>"; if (debug) { alert(html); } } return html; } function init(name) { var timer = setInterval(function() { var doc = document; var el = doc.getElementById(name); if (el) { flashembed(el, userParams, flashvars); clearInterval(timer); } else if (doc && doc.getElementsByTagName && doc.getElementById && doc.body) { clearInterval(timer); } }, 13); return true; } function extend(to, from) { if (from) { for (key in from) { if (from.hasOwnProperty(key)) { to[key] = from[key]; } } } } var params = { src: '#', width: '100%', height: '100%', version: null, onFail: null, expressInstall: null, debug: false, bgcolor: '#ffffff', allowfullscreen: true, allowscriptaccess: 'always', quality: 'high', type: 'application/x-shockwave-flash', pluginspage: 'http://www.adobe.com/go/getflashplayer' }; if (typeof userParams == 'string') { userParams = { src: userParams }; } extend(params, userParams); var version = flashembed.getVersion(); var required = params.version; var express = params.expressInstall; var debug = params.debug; if (typeof root == 'string') { var el = document.getElementById(root); if (el) { root = el; } else { return init(root); } } if (!root) { return; } if (!required || flashembed.isSupported(required)) { params.onFail = params.version = params.expressInstall = params.debug = null; root.innerHTML = getHTML(); return root.firstChild; } else if (params.onFail) { var ret = params.onFail.call(params, flashembed.getVersion(), flashvars); if (ret) { root.innerHTML = ret; } } else if (required && express && flashembed.isSupported([6, 65])) { extend(params, { src: express }); flashvars = { MMredirectURL: location.href, MMplayerType: 'PlugIn', MMdoctitle: document.title }; root.innerHTML = getHTML(); } else { if (root.innerHTML.replace(/\s/g, '') !== '') { } else { root.innerHTML = "<h2>Flash version " + required + " or greater is required</h2>" + "<h3>" + (version[0] > 0 ? "Your version is " + version : "You have no flash plugin installed") + "</h3>" + "<p>Download latest version from <a href='" + params.pluginspage + "'>here</a></p>"; } } function concatVars(vars) { var out = ""; for (var key in vars) { if (vars[key]) { out += [key] + '=' + asString(vars[key]) + '&'; } } return out.substring(0, out.length - 1); } function asString(obj) { switch (typeOf(obj)) { case 'string': return '"' + obj.replace(new RegExp('(["\\\\])', 'g'), '\\$1') + '"'; case 'array': return '[' + map(obj, function(el) { return asString(el); }).join(',') + ']'; case 'function': return '"function()"'; case 'object': var str = []; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { str.push('"' + prop + '":' + asString(obj[prop])); } } return '{' + str.join(',') + '}'; } return String(obj).replace(/\s/g, " ").replace(/\'/g, "\""); } function typeOf(obj) { if (obj === null || obj === undefined) { return false; } var type = typeof obj; return (type == 'object' && obj.push) ? 'array' : type; } if (window.attachEvent) { window.attachEvent("onbeforeunload", function() { __flash_unloadHandler = function() { }; __flash_savedUnloadHandler = function() { }; }); } function map(arr, func) { var newArr = []; for (var i in arr) { if (arr.hasOwnProperty(i)) { newArr[i] = func(arr[i]); } } return newArr; } return root; } if (typeof jQuery == 'function') { (function($) { $.fn.extend({ flashembed: function(params, flashvars) { return this.each(function() { flashembed(this, params, flashvars); }); } }); })(jQuery); } flashembed = flashembed || {}; flashembed.getVersion = function() { var version = [0, 0]; if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { var _d = navigator.plugins["Shockwave Flash"].description; if (typeof _d != "undefined") { _d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10); var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0; version = [_m, _r]; } } else if (window.ActiveXObject) { try { var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch (e) { try { _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); version = [6, 0]; _a.AllowScriptAccess = "always"; } catch (ee) { if (version[0] == 6) { return; } } try { _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch (eee) { } } if (typeof _a == "object") { _d = _a.GetVariable("$version"); if (typeof _d != "undefined") { _d = _d.replace(/^\S+\s+(.*)$/, "$1").split(","); version = [parseInt(_d[0], 10), parseInt(_d[2], 10)]; } } } return version; }; flashembed.isSupported = function(version) { var now = flashembed.getVersion(); var ret = (now[0] > version[0]) || (now[0] == version[0] && now[1] >= version[1]); return ret; };