package com.ericcarlisle
{
    import mx.utils.StringUtil;
    
    public class Utility
    {
            // Returns a formatted m:ss sound duration string from a millisecond-specific duration number. 
            public static function FormatDuration(duration:Number):String
            {
                var formatted_duration:String = "";
                var minutes:int;
                var seconds:int;

                duration = duration/1000;
                minutes = Math.floor(duration / 60);
                seconds = Math.floor(((duration/60)-Math.floor(duration/60))*60);
                
                formatted_duration = minutes.toString() + ":";
                formatted_duration += (seconds < 10) ? "0" + seconds.toString() : seconds.toString();
                return     formatted_duration;         
            }

            // Format volume from decimal (0-1) into ###% format.                        
            public static function FormatVolume(Volume:Number):String
            {
                return "Volume: " + Math.round(Volume).toString() + "%";
            }

            // Format panning from decimal (0-1) into +-###% format.                        
            public static function FormatPanning(Panning:Number):String
            {
                var Pan:Number = Math.round(Panning);
                var Label:String = "";

                if (Pan > 0)
                {
                    Label = "Right " + Pan.toString() + "%";                    
                }
                else if (Pan < 0)
                {
                    Label = "Left " + Math.abs(Pan).toString() + "%";                    
                }
                else if (Pan == 0)
                {
                    Label = "Center";                    
                }
                
                return Label;
            }
            
            // Format HTML label to display sound information.                        
            public static function ReadoutHTML(SongName:String, Track:String, Album:String, Artist:String, Year:String, Duration:Number):String
            {
                var html:String = "";

                // Add title, track number, and duration.
                if (Track != "" && Track != null) html += Track + ". ";

                if (SongName != "" && SongName != null)
                {
                    html +=  SongName;
                }
                else
                {
                    html +=  "Untitled";
                } 
                
                html += " (" + Utility.FormatDuration(Duration) + ")<br />";

                // Add artist, label, and year.
                if (Artist != "" && Artist != null) html += Artist + "<br />";
                if (Album != "" && Album != null) html += Album;
                if (Year != "" && Year != null) html += " (" + Year + ")";

                return html;
            }

    }
}