var AudioPlayer = function () { var instances = []; var activePlayerID; var playerURL = ""; var defaultOptions = {}; var currentVolume = -1; var requiredFlashVersion = "9"; function getPlayer(playerID) { if (document.all && !window[playerID]) { for (var i = 0; i < document.forms.length; i++) { if (document.forms[i][playerID]) { return document.forms[i][playerID]; break; } } } return document.all ? window[playerID] : document[playerID]; } function addListener (playerID, type, func) { getPlayer(playerID).addListener(type, func); } return { setup: function (url, options) { playerURL = url; defaultOptions = options; if (swfobject.hasFlashPlayerVersion(requiredFlashVersion)) { swfobject.switchOffAutoHideShow(); swfobject.createCSS("p.audioplayer_container span", "visibility:hidden;height:24px;overflow:hidden;padding:0;border:none;"); } }, getPlayer: function (playerID) { return getPlayer(playerID); }, addListener: function (playerID, type, func) { addListener(playerID, type, func); }, embed: function (elementID, options) { var instanceOptions = {}; var key; var flashParams = {}; var flashVars = {}; var flashAttributes = {}; // Merge default options and instance options for (key in defaultOptions) { instanceOptions[key] = defaultOptions[key]; } for (key in options) { instanceOptions[key] = options[key]; } if (instanceOptions.transparentpagebg == "yes") { flashParams.bgcolor = "#FFFFFF"; flashParams.wmode = "transparent"; } else { if (instanceOptions.pagebg) { flashParams.bgcolor = "#" + instanceOptions.pagebg; } flashParams.wmode = "opaque"; } flashParams.menu = "false"; for (key in instanceOptions) { if (key == "pagebg" || key == "width" || key == "transparentpagebg") { continue; } flashVars[key] = instanceOptions[key]; } flashAttributes.name = elementID; flashAttributes.style = "outline: none"; flashVars.playerID = elementID; swfobject.embedSWF(playerURL, elementID, instanceOptions.width.toString(), "24", requiredFlashVersion, false, flashVars, flashParams, flashAttributes); instances.push(elementID); }, syncVolumes: function (playerID, volume) { currentVolume = volume; for (var i = 0; i < instances.length; i++) { if (instances[i] != playerID) { getPlayer(instances[i]).setVolume(currentVolume); } } }, activate: function (playerID, info) { if (activePlayerID && activePlayerID != playerID) { getPlayer(activePlayerID).close(); } activePlayerID = playerID; }, load: function (playerID, soundFile, titles, artists) { getPlayer(playerID).load(soundFile, titles, artists); }, close: function (playerID) { getPlayer(playerID).close(); if (playerID == activePlayerID) { activePlayerID = null; } }, open: function (playerID, index) { if (index == undefined) { index = 1; } getPlayer(playerID).open(index == undefined ? 0 : index-1); }, getVolume: function (playerID) { return currentVolume; } } }();