/*! このファイルはUTF-8のBOMなし(UTF-8N)で保存しています
 *
 * Sound Player 1.0 - jQuery plugin
 *
 * Built for jQuery library
 * http://jquery.com/
 */
(function($){
    $.fn.soundplayer = function(options) {
        var defaults = {
            'source' : '',
            'volume' : 50,
            'mode'   : 'stop'
        };
        var opts = $.extend(defaults, options);

        var player = $(this);

        /**
         * 初期化
         */
        addButton();
        addPlayer();

        /**
         * ボタン追加
         */
        function addButton() {
            player.append('<a href="#sound-play" id="soundplayer-play-btn" onclick="return false;"' + (opts.mode == 'play' ? ' style="display: none;"' : '') + '>PLAY</a>')
                  .append('<a href="#sound-stop" id="soundplayer-stop-btn" onclick="return false;"' + (opts.mode == 'stop' ? ' style="display: none;"' : '') + '>STOP</a>');
        }

        /**
         * プレーヤー追加
         */
        function addPlayer() {
            if (isFlashInstalled) {
                player.append('<div id="soundplayer-sound"></div>');
            } else {
                player.append('<div id="soundplayer-sound"><audio volume="' + getVolume() + '"><source src="' + opts.source + '"><source src="' + opts.source.replace(/\.mp3/, '.ogg') + '"></audio></div>');
            }
        }

        /**
         * ボリュームを返す
         */
        function getVolume() {
            var volume = 0;

            if (isFlashInstalled) {
                switch (true) {
                    case 0 >= opts.volume:
                        volume = 0;
                        break;
                    case 0 < opts.volume && 1 >= opts.volume:
                        volume = opts.volume * 100;
                        break;
                    case 1 < opts.volume && 100 >= opts.volume:
                        volume = opts.volume;
                        break;
                    case 100 < opts.volume:
                        volume = 100;
                        break;
                    default:
                        volume = defaults.volume;
                        break;
                }
            } else {
                switch (true) {
                    case 0 >= opts.volume:
                        volume = 0;
                        break;
                    case 0 < opts.volume && 1 >= opts.volume:
                        volume = opts.volume;
                        break;
                    case 1 < opts.volume && 100 >= opts.volume:
                        volume = opts.volume / 100;
                        break;
                    case 100 < opts.volume:
                        volume = 1.0;
                        break;
                    default:
                        volume = defaults.volume / 100;
                        break;
                }
            }

            return volume;
        }

        $('#soundplayer-play-btn').click(function(){
            $.fn.play();
        });
        $('#soundplayer-stop-btn').click(function(){
            $.fn.stop();
        });

        $.fn.play = function() {
            if (isFlashInstalled) {
                $('#soundplayer-sound').html('<embed src="' + opts.source + '" volume="' + getVolume() + '" autostart="true" loop="true" height="1" width="1" />');
            } else {
                $('#soundplayer-sound audio').get(0).volume = getVolume();
                $('#soundplayer-sound audio').get(0).play();
            }
            $('#soundplayer-play-btn').hide();
            $('#soundplayer-stop-btn').show();
            return this;
        };

        $.fn.stop = function() {
            if (isFlashInstalled) {
                $('#soundplayer-sound').html('');
            } else {
                $('#soundplayer-sound audio').get(0).pause();
            }
            $('#soundplayer-play-btn').show();
            $('#soundplayer-stop-btn').hide();
            return this;
        };
    }
})(jQuery);

var isFlashInstalled=function(){if(navigator.plugins["Shockwave Flash"]){return true;}try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash");return true;}catch(a){return false;}}();

