/** HourlyWorker - A class to represent workers paid on a salaried basis)
 *
 * @author - Nancy Harris and Jimmy Tessitore
 * @version - V1 - 10/1/08
 */
 
    public class HourlyWorker
   {
   // declare the instance variables of the class
   
      private String name; 		// the name of the worker
      private String SSN;  		// the SSN of the worker
      private int exemptions;	// the number of tax exemptions for this worker
      private double wage; 		// the hourly rate for this hourly worker
      private String homeDepartment; // home department name
      private double hours;		// the hours that this worker last worked
   
   /** explicit value constructor
    * 
    * @param name 	The name of the worker
    * @param SSN  	The SSN of the worker
    * @param exempt	The number of payroll exemptions
    & @param rate 	The hourly rate for this employee
    */
       public HourlyWorker(String name, String SSN, int exempt, 
       								double rate, String homeDepartment)
      {
         this.name = name;
         this.SSN = SSN;
         this.exemptions = exempt;
         this.wage = rate;
         this.homeDepartment = homeDepartment;
      }
   
   /** pay produces the pay amount for this employee
    *  pay the rate * hours.  (we are disregarding overtime at this time)
    *
    * @param hours The number of hours for this hourly worker
    *
    * @return The amount to pay this employee
    */
       public double pay(double hours)
      {
         double pay = 0;
         double overtimePay = 0;
         double overtimeHours = 0;
      
         this.hours = hours;  // stores the hours worked
      	
      	//Calculates overtime pay
         if(hours > 80)
         {
            overtimeHours = hours - 80;
            overtimePay = overtimeHours * (1.5 * wage);
         
            pay = overtimePay + (wage * hours);
         }
         
         //Otherwise calculates pay normally
         else
         {
            pay = wage * hours;
         }
      	
         return pay;
      }
   
   /** toString produces a single line for each employee
    *
    *  format is Name\tSSN\texemptions\thours\trate\n
    *
    * @return The line representing the employee
    */
       public String toString()
      {
         //returns formatted String
         return name + "\t" + SSN + "\t" + homeDepartment + "\t" + exemptions 
            			+ "\t" + hours + "\t" + wage + "\n";
      }
		
		
   }//end HourlyWorker