#!/usr/bin/perl


$alpha{'zero'}="";
$alpha{'minus'}="";
$alpha{'a_1f'}="";
$alpha{'a_1m'}="";
$alpha{'a_2f'}="";
$alpha{'a_2m'}="";
$alpha{'a_3'}="";
$alpha{'a_4'}="";
$alpha{'a_5'}="";
$alpha{'a_6'}="";
$alpha{'a_7'}="";
$alpha{'a_8'}="";
$alpha{'a_9'}="";
$alpha{'a_10'}="";
$alpha{'a_11'}="";
$alpha{'a_12'}="";
$alpha{'a_13'}="";
$alpha{'a_14'}="";
$alpha{'a_15'}="";
$alpha{'a_16'}="";
$alpha{'a_17'}="";
$alpha{'a_18'}="";
$alpha{'a_19'}="";
$alpha{'a_20'}="";
$alpha{'a_30'}="";
$alpha{'a_40'}="";
$alpha{'a_50'}="";
$alpha{'a_60'}="";
$alpha{'a_70'}="";
$alpha{'a_80'}="";
$alpha{'a_90'}="";
$alpha{'a_100'}="";
$alpha{'a_200'}="";
$alpha{'a_300'}="";
$alpha{'a_400'}="";
$alpha{'a_500'}="";
$alpha{'a_600'}="";
$alpha{'a_700'}="";
$alpha{'a_800'}="";
$alpha{'a_900'}="";
$alpha{'p3_1'}="";
$alpha{'p3_234'}="";
$alpha{'p3_056789'}="";
$alpha{'p6_1'}="";
$alpha{'p6_234'}="";
$alpha{'p6_056789'}="";
$alpha{'money_cents_RUBp0_056789'}="";
$alpha{'money_cents_RUBp0_1'}="";
$alpha{'money_cents_RUBp0_234'}="";
$alpha{'money_dollars_RUBp0_056789'}="";
$alpha{'money_dollars_RUBp0_1'}="";
$alpha{'money_dollars_RUBp0_234'}="";

$alpha{'money_cents_USDp0_056789'}="";
$alpha{'money_cents_USDp0_1'}="";
$alpha{'money_cents_USDp0_234'}="";
$alpha{'money_dollars_USDp0_056789'}="";
$alpha{'money_dollars_USDp0_1'}="";
$alpha{'money_dollars_USDp0_234'}="";



my $last_digit;
sub say_number1000  {
	my ($x,$sex) =@_;
        my $max_power=3;
        my $number_string="";


	my %alpha;

        $alpha{0}{1}="a_1m";
        $alpha{0}{2}="a_2m";
        $alpha{0}{3}="a_3";
        $alpha{0}{4}="a_4";
        $alpha{0}{5}="a_5";
        $alpha{0}{6}="a_6";
        $alpha{0}{7}="a_7";
        $alpha{0}{8}="a_8";
        $alpha{0}{9}="a_9";
        $alpha{0}{10}="a_10";
        $alpha{0}{11}="a_11";
        $alpha{0}{12}="a_12";
        $alpha{0}{13}="a_13";
        $alpha{0}{14}="a_14";
        $alpha{0}{15}="a_15";
        $alpha{0}{16}="a_16";
        $alpha{0}{17}="a_17";
        $alpha{0}{18}="a_18";
        $alpha{0}{19}="a_19";
        $alpha{0}{20}="a_20";
        $alpha{0}{30}="a_30";
        $alpha{0}{40}="a_40";
        $alpha{0}{50}="a_50";
        $alpha{0}{60}="a_60";
        $alpha{0}{70}="a_70";
        $alpha{0}{80}="a_80";
        $alpha{0}{90}="a_90";
        $alpha{0}{100}="a_100";
        $alpha{0}{200}="a_200";
        $alpha{0}{300}="a_300";
        $alpha{0}{400}="a_400";
        $alpha{0}{500}="a_500";
        $alpha{0}{600}="a_600";
        $alpha{0}{700}="a_700";
        $alpha{0}{800}="a_800";
        $alpha{0}{900}="a_900";

        $alpha{1}{1}="a_1f";
        $alpha{1}{2}="a_2f";
        $alpha{1}{3}="a_3";
        $alpha{1}{4}="a_4";
        $alpha{1}{5}="a_5";
        $alpha{1}{6}="a_6";
        $alpha{1}{7}="a_7";
        $alpha{1}{8}="a_8";
        $alpha{1}{9}="a_9";
        $alpha{1}{10}="a_10";
        $alpha{1}{11}="a_11";
        $alpha{1}{12}="a_12";
        $alpha{1}{13}="a_13";
        $alpha{1}{14}="a_14";
        $alpha{1}{15}="a_15";
        $alpha{1}{16}="a_16";
        $alpha{1}{17}="a_17";
        $alpha{1}{18}="a_18";
        $alpha{1}{19}="a_19";
        $alpha{1}{20}="a_20";
        $alpha{1}{30}="a_30";
        $alpha{1}{40}="a_40";
        $alpha{1}{50}="a_50";
        $alpha{1}{60}="a_60";
        $alpha{1}{70}="a_70";
        $alpha{1}{80}="a_80";
        $alpha{1}{90}="a_90";
        $alpha{1}{100}="a_100";
        $alpha{1}{200}="a_200";
        $alpha{1}{300}="a_300";
        $alpha{1}{400}="a_400";
        $alpha{1}{500}="a_500";
        $alpha{1}{600}="a_600";
        $alpha{1}{700}="a_700";
        $alpha{1}{800}="a_800";
        $alpha{1}{900}="a_900";

	my $number_string;

        for(my $i=$max_power - 1; $i >= 0 ; $i-- ) {

                my $p=10**$i;
                my $n=int($x / $p);
                $x=$x % $p;

                $last_digit=$n;

                my $nn=$n * $p;
                if ($p == 10 && $n==1) {
                        $nn= $nn + $x;
                        $last_digit=0;
                        $number_string.=$alpha{$sex}{$nn}. " ";
                        last;
                } elsif ( $nn > 0 ) {
                        $number_string.=$alpha{$sex}{$nn} . " ";
                }

        }

        return $number_string;

}


sub say_number {
	my ($x,$prefix_0,$sex_0)=@_;


	my %power_name;

        my $number_string="";
        my $max_power=6;
        my $zero="zero";


        $power_name{0}{0}="p0_056789";
        $power_name{0}{1}="p0_1";
        $power_name{0}{2}="p0_234";
        $power_name{0}{3}="p0_234";
        $power_name{0}{4}="p0_234";
        $power_name{0}{5}="p0_056789";
        $power_name{0}{6}="p0_056789";
        $power_name{0}{7}="p0_056789";
        $power_name{0}{8}="p0_056789";
        $power_name{0}{9}="p0_056789";

	$power_name{3}{0}="p3_056789";
        $power_name{3}{1}="p3_1";
        $power_name{3}{2}="p3_234";
        $power_name{3}{3}="p3_234";
        $power_name{3}{4}="p3_234";
        $power_name{3}{5}="p3_056789";
        $power_name{3}{6}="p3_056789";
        $power_name{3}{7}="p3_056789";
        $power_name{3}{8}="p3_056789";
        $power_name{3}{9}="p3_056789";

	$power_name{6}{0}="p6_056789";
        $power_name{6}{1}="p6_1";
        $power_name{6}{2}="p6_234";
        $power_name{6}{3}="p6_234";
	$power_name{6}{4}="p6_234";
        $power_name{6}{5}="p6_056789";
        $power_name{6}{6}="p6_056789";
        $power_name{6}{7}="p6_056789";
        $power_name{6}{8}="p6_056789";
        $power_name{6}{9}="p6_056789";

	my $prefix;

        #sex 1-mail 0-femail

	my %power_sex;

        $power_sex{0}=$sex_0;
        $power_sex{3}=1;
        $power_sex{6}=0;

        if ($x == 0) {
                return $zero . " " . $prefix_0 . $power_name{0}{0} ;
        }


        for (my $i=$max_power;  $i >= 0 ; $i-=3 ) {
                if ( $i<0 ) {
                        $i=0;
                }

                my $sex=$power_sex{$i};
                my $p=10**$i;
                my $n=int($x / $p);
                $x=$x % $p;

		my $prefix="";
                if ( $i == 0  ) {
                        $prefix=$prefix_0;
                }


		#print "i=$i, sex=$sex, p=$p, n=$n, x=$x \n";
                if ( $n > 0 ) {
			$number_string .= say_number1000($n,$sex) . " " . $prefix . $power_name{$i}{$last_digit} . " ";
                }

        	#if ($x == 0) {
                #	return $number_string . " " . $prefix_0 . $power_name{0}{0} ;
        	#}



        }


        return $number_string;

}


sub say_money  {
	my($x,$cur)=@_;

        $x=sprintf("%.2f",$x);

        my $g_d=$CFG::CURRENCY{$cur}{'gender'}->{dollar};
        my $g_c=$CFG::CURRENCY{$cur}{'gender'}->{cent};



        # x -  sum in cents
        my $minus="minus";
	my $sign = "";

	$x=$x * 100;

        if ($x < 0) {
                $sign=$minus;
                $x=0 - $x;
        }

        my $d=int($x / 100);
        my $c=sprintf("%.2f", $x - int($x / 100)*100 ) ;


        my $dollars=say_number($d,"money_dollars_" . $cur , $g_d);

        my $cents="";
        $cents=say_number($c,"money_cents_" . $cur ,$g_c);

	#print "$dollars = $cents \n";
        my $result;

        foreach (split (' ', $sign . " " . $dollars . " " . $cents) ) {
                $result.=$alpha{$_} . " ";
        }

        return $result;
}


sub say_money_short  {
        my($x,$cur)=@_;

        $x=sprintf("%.2f",$x);
        my $g_d=$CFG::CURRENCY{$cur}{'gender'}->{dollar};
	my $g_c=$CFG::CURRENCY{$cur}{'gender'}->{cent};



        # x -  sum in cents
        my $minus="minus";
        my $sign = "";

        $x=$x * 100;

        if ($x < 0) {
                $sign=$minus;
                $x=0 - $x;
        }

	my $c=sprintf("%.2f", $x - int($x / 100)*100 ) ;
        my $d=int($x / 100);

        my $dollars=say_number($d,"money_dollars_" . $cur , $g_d);




        my $result;

        foreach (split (' ', $sign . " " . $dollars ) ) {
                $result.=$alpha{$_} . " ";
        }

	my $cents=say_number($c,"money_cents_" . $cur ,$g_c);
	my $name_cents;
        foreach (split (' ',$cents) ) {
                $name_cents=$alpha{$_};
        }


        return $result . " " . sprintf("%02d", $c) . " " . $name_cents;
		#$CFG::CURRENCY{$cur}{'name_cent_short'};
}

1;
