/**
 * gameQuery rev. $Revision$
 *
 * Copyright (c) 2008 Selim Arsever (gamequery.onaluf.org)
 * licensed under the MIT (MIT-LICENSE.txt)
 */

 /**
  * To use this wrapper you will need:
  * 1) Include SoundManager2.js before this script
  * 2) Give SoundManager2 the position of the swf ie. : soundManager.url = './path/to/swf'
  * 3) Optionally deactivate the debug mode from SoundManager2
  */

// this allows use of the convenient $ notation in a plugin
(function($) {
    soundManager.url = './'
    // Here is a bogus soundWrapper written as an example
    $.extend($.gameQuery, {
        SoundWrapper: function(url, loop) {

            // start loading the sound. Should turn this.ready to true once done.
            this.load  = function(){
            	try{
	                this.sound = soundManager.createSound({
	                    id: this.id,
	                    url: url,
	                    autoplay: false,
	                    autoLoad: true
	                });
              } catch (err) {
              	// if something failed we generate a fake sound object
              		this.sound = {readyState: 3, play: function(){}};
              }
            };

            // plays the sound if this.ready == true
            this.play  = function(){
                if(loop){
                    this.sound.play({
                        onfinish: function() {
                            this.play();
                        }
                    });
                } else {
                    this.sound.play();
                }
            };

            // pauses the sound if it is playing
            this.pause = function(){
                this.sound.pause();
            };

            // stops the sound if it is playing, rewind (even if paused)
            this.stop  = function(){
                this.sound.stop();
            };

            // mutes the sound without stopping it
            this.muted = function(mute){
                if(mute){
                    this.sound.mute()
                } else {
                    this.sound.unmute();
                }
            }

            // returns true if the sound is ready to be played
            this.ready = function(){
                return this.sound.readyState==3
            };

            // add the sound to the manager
            this.id = 'sound_'+$.gameQuery.resourceManager.sounds.length;
            $.gameQuery.resourceManager.addSound(this);

            return true;
        }});
})(jQuery);