audio-player-uncompressed.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. var AudioPlayer = function () {
  2. var instances = [];
  3. var activePlayerID;
  4. var playerURL = "";
  5. var defaultOptions = {};
  6. var currentVolume = -1;
  7. var requiredFlashVersion = "9";
  8. function getPlayer(playerID) {
  9. if (document.all && !window[playerID]) {
  10. for (var i = 0; i < document.forms.length; i++) {
  11. if (document.forms[i][playerID]) {
  12. return document.forms[i][playerID];
  13. break;
  14. }
  15. }
  16. }
  17. return document.all ? window[playerID] : document[playerID];
  18. }
  19. function addListener (playerID, type, func) {
  20. getPlayer(playerID).addListener(type, func);
  21. }
  22. return {
  23. setup: function (url, options) {
  24. playerURL = url;
  25. defaultOptions = options;
  26. if (swfobject.hasFlashPlayerVersion(requiredFlashVersion)) {
  27. swfobject.switchOffAutoHideShow();
  28. swfobject.createCSS("p.audioplayer_container span", "visibility:hidden;height:24px;overflow:hidden;padding:0;border:none;");
  29. }
  30. },
  31. getPlayer: function (playerID) {
  32. return getPlayer(playerID);
  33. },
  34. addListener: function (playerID, type, func) {
  35. addListener(playerID, type, func);
  36. },
  37. embed: function (elementID, options) {
  38. var instanceOptions = {};
  39. var key;
  40. var flashParams = {};
  41. var flashVars = {};
  42. var flashAttributes = {};
  43. // Merge default options and instance options
  44. for (key in defaultOptions) {
  45. instanceOptions[key] = defaultOptions[key];
  46. }
  47. for (key in options) {
  48. instanceOptions[key] = options[key];
  49. }
  50. if (instanceOptions.transparentpagebg == "yes") {
  51. flashParams.bgcolor = "#FFFFFF";
  52. flashParams.wmode = "transparent";
  53. } else {
  54. if (instanceOptions.pagebg) {
  55. flashParams.bgcolor = "#" + instanceOptions.pagebg;
  56. }
  57. flashParams.wmode = "opaque";
  58. }
  59. flashParams.menu = "false";
  60. for (key in instanceOptions) {
  61. if (key == "pagebg" || key == "width" || key == "transparentpagebg") {
  62. continue;
  63. }
  64. flashVars[key] = instanceOptions[key];
  65. }
  66. flashAttributes.name = elementID;
  67. flashAttributes.style = "outline: none";
  68. flashVars.playerID = elementID;
  69. swfobject.embedSWF(playerURL, elementID, instanceOptions.width.toString(), "24", requiredFlashVersion, false, flashVars, flashParams, flashAttributes);
  70. instances.push(elementID);
  71. },
  72. syncVolumes: function (playerID, volume) {
  73. currentVolume = volume;
  74. for (var i = 0; i < instances.length; i++) {
  75. if (instances[i] != playerID) {
  76. getPlayer(instances[i]).setVolume(currentVolume);
  77. }
  78. }
  79. },
  80. activate: function (playerID, info) {
  81. if (activePlayerID && activePlayerID != playerID) {
  82. getPlayer(activePlayerID).close();
  83. }
  84. activePlayerID = playerID;
  85. },
  86. load: function (playerID, soundFile, titles, artists) {
  87. getPlayer(playerID).load(soundFile, titles, artists);
  88. },
  89. close: function (playerID) {
  90. getPlayer(playerID).close();
  91. if (playerID == activePlayerID) {
  92. activePlayerID = null;
  93. }
  94. },
  95. open: function (playerID, index) {
  96. if (index == undefined) {
  97. index = 1;
  98. }
  99. getPlayer(playerID).open(index == undefined ? 0 : index-1);
  100. },
  101. getVolume: function (playerID) {
  102. return currentVolume;
  103. }
  104. }
  105. }();