package funky;
use Exporter();
@ISA            = qw(Exporter);

@EXPORT         = qw(timethis spinprogress @returnlist);

#Parameters are as follows for spinprogress:
#$Parms[0] = the mode, 0 1 or 2
#            0 is just a spinny bar
#            1 is spinny bar and lines read so far count
#            2 is spinny bar and percentage of lines read so far
#$Parms[1] = reset, the value of lines read at which the animation changes
#            (the animation increment)
#$Parms[2] = total, the total number of lines to be read (which is used to
#            work out what percent have been read so far.

sub spinprogress
{
        my @parms = @_;
        $switcher++;
        $incr++;

        #get display increment
        $reset = $parms[1];
        $total = $parms[2];

        if ($switcher >= 4) # spin animation cycler
        {
                $switcher = 0;
        }
        if ($incr >= ($reset +1)) # increment in movement
        {
                $incr = 0;
        }

        if ($incr == $reset) # every $reset times, do the anim
        {
                if ($parms[0] == 0) # simple spinny line
                {
                        if ($switcher == 1)
                        {
                                print "³\r";
                        }
                        elsif ($switcher == 2)
                        {
                                print "/\r";
                        }
                        elsif ($switcher == 3)
                        {
                                print "- \r";
                        }
                        elsif ($switcher == 0)
                        {
                                print "\\\r";
                        }
                }
                elsif ($parms[0] == 1) # spinny line + line counter
                {
                        if ($switcher == 1)
                        {
                                print "³ Lines Read So Far: $.\r";
                        }
                        elsif ($switcher == 2)
                        {
                                print "/ Lines Read So Far: $.\r";
                        }
                        elsif ($switcher == 3)
                        {
                                print "- Lines Read So Far: $.\r";
                        }
                        elsif ($switcher == 0)
                        {
                                print "\\ Lines Read So Far: $.\r";
                        }
                }
                elsif ($parms[0] == 2) # spinny line + line percentage counter
                {
                        $percent = ($./$total); # calculate percent read;
                        $percent = (int($percent * 100));

                        if ($switcher == 1)
                        {
                                print "³ Lines Read So Far: $percent\%\r";
                        }
                        elsif ($switcher == 2)
                        {
                                print "/ Lines Read So Far: $percent\%\r";
                        }
                        elsif ($switcher == 3)
                        {
                                print "- Lines Read So Far: $percent\%\r";
                        }
                        elsif ($switcher == 0)
                        {
                                print "\\ Lines Read So Far: $percent\%\r";
                        }
                }
        }
}

sub timethis
{
        my @parms = @_;

        if($parms[0] == 0) # start timing
        {
                $starttime = time();
        }
        elsif ($parms[0] == 1) # stop timing and return time taken
        {
                $finishtime = time();

                $t = $finishtime - $starttime;

                $secs = $t % 60; #seconds
                $t = $t / 60;

                $mins = $t % 60; #minutes
                $t = $t / 60;

                $hours = $t % 60; #hours
                if ($hours >= 24)
                {
                         $hours = $hours -24;
                }
        
                $t = $t / 24;
                $days = $t % 24; #days
        
                $returnlist[0] = "Time Taken: ";
                $returnlist[1] = "$days days ";
                $returnlist[2] = "$hours hours ";
                $returnlist[3] = "$mins minutes ";
                $returnlist[4] = "$secs seconds\n";

                return @returnlist;
        }
}

