/* Unobtrusive Flash Objects (UFO) v1.01 Copyright 2005 Bobby van der Sluis This software is licensed under the CC-GNU LGPL ------------------------------ v1.01 Fixed bug: Added missing quotes around attribute values */ var UFO = { requiredAttrParams: ["movie", "width", "height", "majorversion", "build"], optionalAttrEmb: ["name", "swliveconnect", "align"], optionalAttrObj: ["id", "align"], optionalAttrParams: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", "bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess"], create: function(FO, id) { UFO.setElementDisplay(id, "none"); var loadfn = function() { if (UFO.hasRequiredAttrParams(FO) && UFO.hasFlashVersion(FO.majorversion, FO.build)) { UFO.writeFlashObject(FO, id); } UFO.setElementDisplay(id, "block"); }; UFO.addLoadEvent(loadfn); }, setElementDisplay: function(id, display) { if (!document.createElement || !document.getElementsByTagName) return; var selector = "#" + id; var property = "display: " + display; var style = document.createElement("style"); style.setAttribute("type", "text/css"); style.setAttribute("media", "screen"); document.getElementsByTagName("head")[0].appendChild(style); var agt = navigator.userAgent.toLowerCase(); var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); var is_win = (agt.indexOf("win") != -1); if (!(is_ie && is_win)) { var styles = document.getElementsByTagName("style"); if (styles && styles.length > 0 && document.createTextNode) { var lastStyle = styles[styles.length - 1]; var rule = document.createTextNode(selector + " {" + property + ";}"); lastStyle.appendChild(rule); // Hopelessly bugs in IE/Win } } else if (document.styleSheets && document.styleSheets.length > 0) { var stylesheet = document.styleSheets[document.styleSheets.length - 1]; if (typeof stylesheet.addRule == "object"){ // This test bugs in IE/Mac and Safari stylesheet.addRule(selector, property); } } }, hasRequiredAttrParams: function(FO) { for (var i = 0; i < UFO.requiredAttrParams.length; i++) { if (typeof FO[UFO.requiredAttrParams[i]] == "undefined") return false; } return true; }, hasFlashVersion: function(majorVersion, build) { var reqVersion = parseFloat(majorVersion + "." + build); if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { var desc = navigator.plugins["Shockwave Flash"].description; if (desc) { var descArr = desc.split(" "); var majorArr = descArr[2].split("."); var major = majorArr[0]; if (descArr[3] != "") { var minorArr = descArr[3].split("r"); } else { var minorArr = descArr[4].split("r"); } var minor = minorArr[1] > 0 ? minorArr[1] : 0; var flashVersion = parseFloat(major + "." + minor); } } else if (window.ActiveXObject) { try { var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); var desc = flash.GetVariable("$version"); if (desc) { var descArr = desc.split(" "); var versionArr = descArr[1].split(","); var major = versionArr[0]; var minor = versionArr[2]; var flashVersion = parseFloat(major + "." + minor); } } catch(e) {} } if (typeof flashVersion != "undefined"){ return (flashVersion >= reqVersion ? true : false); } return false; }, writeFlashObject: function(FO, id) { if (!document.getElementById) return; var el = document.getElementById(id); if (typeof el.innerHTML == "undefined") return; var embHTML = ""; var objAttrHTML = ""; var objParamHTML = ""; for (var i = 0; i < UFO.optionalAttrEmb.length; i++) { if (typeof FO[UFO.optionalAttrEmb[i]] != "undefined" && FO[UFO.optionalAttrEmb[i]] != "") { embHTML += ' ' + UFO.optionalAttrEmb[i] + '="' + FO[UFO.optionalAttrEmb[i]] + '"'; } } for (var i = 0; i < UFO.optionalAttrObj.length; i++) { if (typeof FO[UFO.optionalAttrObj[i]] != "undefined" && FO[UFO.optionalAttrObj[i]] != "") { objAttrHTML += ' ' + UFO.optionalAttrObj[i] + '="' + FO[UFO.optionalAttrObj[i]] + '"'; } } for (var i = 0; i < UFO.optionalAttrParams.length; i++) { if (typeof FO[UFO.optionalAttrParams[i]] != "undefined" && FO[UFO.optionalAttrParams[i]] != "") { embHTML += ' ' + UFO.optionalAttrParams[i] + '="' + FO[UFO.optionalAttrParams[i]] + '"'; objParamHTML += ''; } } if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { var foHTML = ''; foHTML += ''; foHTML += objParamHTML; foHTML += ''; } el.innerHTML = foHTML; }, addLoadEvent: function(fn) { if (window.addEventListener) { window.addEventListener("load", fn, false); } else if (document.addEventListener) { document.addEventListener("load", fn, false); } else if (window.attachEvent) { window.attachEvent("onload", fn); } else if (typeof window.onload == "function") { var fnOld = window.onload; window.onload = function(){ fnOld(); fn(); }; } else { window.onload = fn; } } };