/**
 * A utility class that can be used to calculate sales
 * taxes on a collection of items
 *
 *
 * This work complies with the JMU Honor Code.
 *
 * @author  Britni Tourjee
 * @version 1.0
 */
    public class TaxCalculator
   {
      public static int NON_FOOD        = 0;
      public static int FOOD            = 1;
      public static int PREPARED_FOOD   = 2;
    
   
    /**
     * Calculate the tax on the (non-prepared) food items
     *
     * @param prices      The prices of all items purchases
     * @param categories  The corresponding categories of all items purchases
     * @return            The tax
     */
       public static double foodTax(double[] prices, int[] categories)
      {
         double tax;
       
         tax = 0.0;
       
       	// loops through arrays to set tax for each index of the array
         for (int i=0; i < prices.length; i++)
         {
            if (categories[i] == 1)
            {
               tax += StateTaxes.foodTax(prices[i]);
            }
         }
      
         return tax;       
      }
   
   
    /**
     * Calculate the tax on the non-food items
     *
     * @param prices      The prices of all items purchases
     * @param categories  The corresponding categories of all items purchases
     * @return            The tax
     */
       public static double nonfoodTax(double[] prices, int[] categories)
      {
         double tax;
       
         tax = 0.0;
       
       	// loops through arrays to set tax for each index of the array
         for (int i=0; i < prices.length; i++)
         {
            if (categories[i] == 0)
            {
               tax += StateTaxes.salesTax(prices[i]);
            }
         }
      
         return tax;       
      }
    
   
   
    /**
     * Calculate the tax on the prepared food items
     *
     * @param prices      The prices of all items purchases
     * @param categories  The corresponding categories of all items purchases
     * @return            The tax
     */
       public static double preparedfoodTax(double[] prices, int[] categories)
      {
         double tax;
       
         tax = 0.0;
       
       	// loops through arrays to set tax for each index of the array
         for (int i=0; i < prices.length; i++)
         {
            if (categories[i] == 2)
            {
               tax += LocalTaxes.preparedFoodTax(prices[i]);
            }
         }
      
         return tax;       
      }
   
   
   
    /**
     * Calculate the total value of all items purchased in
     * particular category
     *
     * @param prices      			The prices of all items purchases
     * @param categories 			The corresponding categories of all items purchases
     * @param categoryToInclude  The category of interest
     * @return            			The total value of items in the given category
     */
       public static double total(double[] prices, int[] categories, 
                                int categoryToInclude)
      {
         double     total;
       
         total = 0.00;
       
       	// loops through the array and totals the prices
         for (int i=0; i < prices.length; i++)
         {
            if (categories[i] == categoryToInclude)
            {
               total += prices[i];
            }
         
         }
       
         return total;       
      }
    
    
    /**
     * Determin if the given category is valid
     *
     * @param category   The category of interest
     * @return           true if the category is valid; false otherwise
     */
       public static boolean isValid(int category)
      {
         boolean     result;
       
         result = false;
       
      	// returns a boolean value as to whether the user input a valid
      	// category number
         if (category >= 0 && category <= 2)
            result = true;
         else
            result = false;
       
         return result;       
      }
    
   }
