                // Create a YUI instance and request the slider module and its dependencies
                YUI({combine: true, timeout: 10000}).use("slider", function (Y) {

                var control    = Y.get('#volume_control'),
                sliderBox  = Y.get('#volume_slider'),
                volInput   = Y.get('#volume'),
                icon       = Y.get('#volume_icon'),
                mute       = Y.get('#mute'),
                open       = false,
                level      = 4,
                beforeMute = 0,
                volume;

                sliderBox.setStyle('left',icon.get('offsetLeft')+'px');

                volume = new Y.Slider({
                boundingBox: sliderBox,
                contentBox : '#volume_slider_content',
                axis       : 'x',
                min        : 0,
                max        : 100,
                value      : 50,
                railSize   : '58px',
                minGutter  : 5,
                maxGutter  : 6
                }).render();

                // Initialize event listeners
                volume.after('valueChange', updateInput);
				volume.after('valueChange', updateIcon);

                mute.on('click', muteVolume);

                volInput.on({
                keydown: handleInput,
                keyup:   updateVolume
                });

                icon.on('click', showHideSlider);

                Y.on('click', handleDocumentClick, document);

                // Support functions
                function updateInput(e) {
					if (e.src !== 'KEY') {
						volInput.set('value',e.newVal);
					}
                }

                function updateIcon(e) {
                var newLevel = e.newVal && Math.ceil(e.newVal / 34);

                if (level !== newLevel) {
					icon.replaceClass('level_'+level, 'level_'+newLevel);
					level = newLevel;
					}
                }

                function muteVolume(e) {
					var disabled = !volume.get('disabled');
					volume.set('disabled', disabled);

					if (disabled) {
						beforeMute = volume.getValue();
						volume.setValue(0);
						this.set('innerHTML','unmute');
						volInput.set('disabled','disabled');
					} else {
						volume.set('value', beforeMute);
						this.set('innerHTML','mute');
						volInput.set('disabled','');
					}
                }

                function handleInput(e) {
                // Allow only numbers and various other control keys
                if (e.keyCode > 57) {
              	  e.halt();
                }

                // Stop numbers that would result in a value > 100
                if (e.keyCode >= 48) {
					var val = volInput.get('value'),
					key = e.keyCode - 48;

					if (parseInt(val + key,10) > 100) {
					e.halt();
					}
             	   }
                }

                function updateVolume(e) {
                var value = parseInt(volInput.get('value'),10) || 0;
                volume.setValue(value, { src: 'KEY' });
                }

                function showHideSlider(e) {
					control.toggleClass('volume-hide');
					open = !open;

					if (open) {
						volume.syncUI();
					}

					if (e) {
						e.preventDefault();
					}
                }

                function handleDocumentClick(e) {

					if (open && !icon.contains(e.target) &&
					!volume.get('boundingBox').contains(e.target)) {
						showHideSlider();
					}
                }

                });