package a4;

public class SalariedEmployeeImpl extends EmployeeImpl implements
		SalariedEmployee {

	private double monthlySalary;

	SalariedEmployeeImpl(String first_name, String last_name, String job_title,
			int id, double monthly_salary) {
		super(first_name, last_name, job_title, id,
				calculateGrossYearlyIncome(monthly_salary),
				calculateNet_yearly_Income(monthly_salary),
				calculateTaxableIncome(monthly_salary),
				calculateTaxWitheld(monthly_salary));

		this.monthlySalary = monthly_salary;

	}

	private static double calculateTaxableIncome(double monthly_salary) {
		return calculateGrossYearlyIncome(monthly_salary);
	}

	private static double calculateGrossYearlyIncome(double monthly_salary) {
		return 12 * monthly_salary;
	}

	private static double calculateNet_yearly_Income(double monthly_salary) {
		return calculateGrossYearlyIncome(monthly_salary)
				- calculateTaxWitheld(monthly_salary);
	}

	private static double calculateTaxWitheld(double monthly_salary) {
		double taxableIncome = calculateTaxableIncome(monthly_salary);
		double taxWithheld = 0;

		if (taxableIncome > 50000) {
			taxWithheld += 5000;
			taxableIncome -= 50000;

			if (taxableIncome > 50000) {
				taxWithheld += 7500;
				taxableIncome -= 50000;
				if (taxableIncome > 0) {
					taxWithheld += taxableIncome * .25;
				}

			} else {
				taxWithheld += taxableIncome * .15;
			}

		} else {
			taxWithheld += taxableIncome * .1;
		}

		return taxWithheld;

	}

	@Override
	public double getMonthlySalary() {
		// TODO Auto-generated method stub
		return monthlySalary;
	}

	@Override
	public void setMonthlySalary(double salary) {
		// TODO Auto-generated method stub
		salary = this.monthlySalary;
	}

	


	

}
