/**
 * 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: Yanitsa Staleva
 * @version 1 date: 09/13/08
 */
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;
		 double valOfNonPreFood;
		 
       //tax on non prepared food 
		
		 valOfNonPreFood = total(prices,categories,1);
	    tax = StateTaxes.foodTax(valOfNonPreFood);
       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;
		 double valOfNonFood;
		 
		 //the two arrays and the categori is send 
		 //to the method that will sum up the desired
		 //values 
		 valOfNonFood = total(prices,categories,0);
		 tax = StateTaxes.salesTax(valOfNonFood);
       
       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;
		 double valOfPrepFood;
		 
       valOfPrepFood = total(prices,categories,2);
		 tax =  LocalTaxes.preparedFoodTax(valOfPrepFood);

       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;
		 
       for(int i = 0; i < prices.length; i ++)
		 {
		    if(categories[i] == categoryToInclude)
			 total = 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;
		 if(category == 0 || category == 1 || category == 2)
		 {
		    result = true;
		 }
       
       return result;       
    }
    
}//TaxCalculator
