| // script.aculo.us sound.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007 |
| |
| // Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) |
| // |
| // Based on code created by Jules Gravinese (http://www.webveteran.com/) |
| // |
| // script.aculo.us is freely distributable under the terms of an MIT-style license. |
| // For details, see the script.aculo.us web site: http://script.aculo.us/ |
| |
| Sound = { |
| tracks: {}, |
| _enabled: true, |
| template: |
| new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'), |
| enable: function() |
| { |
| Sound._enabled = true; |
| }, |
| disable: function() |
| { |
| Sound._enabled = false; |
| }, |
| play: function(url) |
| { |
| if (!Sound._enabled) return; |
| var options = Object.extend({ |
| track: 'global', url: url, replace: false |
| }, arguments[1] || {}); |
| |
| if (options.replace && this.tracks[options.track]) |
| { |
| $R(0, this.tracks[options.track].id).each(function(id) |
| { |
| var sound = $('sound_' + options.track + '_' + id); |
| sound.Stop && sound.Stop(); |
| sound.remove(); |
| }) |
| this.tracks[options.track] = null; |
| } |
| |
| if (!this.tracks[options.track]) |
| this.tracks[options.track] = { id: 0 } |
| else |
| this.tracks[options.track].id++; |
| |
| options.id = this.tracks[options.track].id; |
| $$('body')[0].insert( |
| Prototype.Browser.IE ? new Element('bgsound', { |
| id: 'sound_' + options.track + '_' + options.id, |
| src: options.url, loop: 1, autostart: true |
| }) : Sound.template.evaluate(options)); |
| } |
| }; |
| |
| if (Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0) |
| { |
| if (navigator.plugins && $A(navigator.plugins).detect(function(p) |
| { |
| return p.name.indexOf('QuickTime') != -1 |
| })) |
| Sound.template = new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>') |
| else |
| Sound.play = function() |
| { |
| } |
| } |