
(function($) {
  $.fn.calc = function(config) {

    var op = {
      wrapper: '',

      number_of_employees : 0,
      number_of_employees_class : '',
      ave_employee_gross_salary : 0,
      ave_employee_gross_salary_class : '',
      number_of_hr_managers : 0,
      number_of_hr_managers_class : '',
      ave_hr_staff_gross_salary : 0,
      ave_hr_staff_gross_salary_class : '',

      result_field_class : '',
      result_field_val: 0,

      n1_hours_per_week: 40,
      n1_weeks_per_annum : 50,
      n1_working_hours_per_annum : 2000,

      n2_hours_saved_per_employee : 4.09,

      n3_hours_saved_per_hr_manager : 102.2,

      n4_cost_per_employee_per_annum : 0,

      n5_set_up_fee : 0,

      n4_n5_value: function (){
        if(op.number_of_employees <= 50) {
          op.n4_cost_per_employee_per_annum =  575;
          op.n5_set_up_fee = 10000 ;
        } else if(op.number_of_employees >= 51 && op.number_of_employees <= 250){
          op.n4_cost_per_employee_per_annum = 450;
          op.n5_set_up_fee =  12000 ;
        } else if(op.number_of_employees >= 251 && op.number_of_employees <= 500){
          op.n4_cost_per_employee_per_annum = 360;
          op.n5_set_up_fee =  12000 ;
        } else if(op.number_of_employees >= 501 && op.number_of_employees <= 1000){
          op.n4_cost_per_employee_per_annum =  320;
          op.n5_set_up_fee =  15000 ;
        } else if(op.number_of_employees >= 1001 && op.number_of_employees <= 2000){
          op.n4_cost_per_employee_per_annum = 300;
          op.n5_set_up_fee =  17500 ;
        } else if(op.number_of_employees > 2000){
          op.n4_cost_per_employee_per_annum =  300;
          op.n5_set_up_fee =  20000 ;
        }

        /*$(".resultstep").append("N4 - "+op.n4_cost_per_employee_per_annum + "<br/>");
        $(".resultstep").append("N5 - "+op.n5_set_up_fee + "<br/>");*/
      },

      step_1_result : 0,
      step_1 : function(){
        //Calculation 1: Time Saved Per Employee	(Number of Employees * Ave Employee Gross Salary/Working Hours Per Annum (N1)) * Hours Saved Per Employee (N2)

        op.step_1_result = (op.number_of_employees * op.ave_employee_gross_salary / op.n1_working_hours_per_annum) * op.n2_hours_saved_per_employee ;
        op.step_1_result = Math.round(op.step_1_result*100)/100;
        /*$(".resultstep").append("STEP 1 - ( "+op.number_of_employees +"*"+ op.ave_employee_gross_salary+ "/"+ op.n1_working_hours_per_annum+")*"+ op.n2_hours_saved_per_employee +"   =  "+op.step_1_result + "<br/>");*/
      },
      step_2_result : 0,
      step_2 : function(){
        //Calculation 2: Time Saved Per Staff Member Dealing with HR	(Number of HR Managers * Ave HR Manager Gross Salary/1920) * Hours Saved Per HR Manager(N3)

        op.step_2_result = (op.number_of_hr_managers * op.ave_hr_staff_gross_salary / op.n1_working_hours_per_annum) * op.n3_hours_saved_per_hr_manager ;
        op.step_2_result = Math.round(op.step_2_result*100)/100;
        /*$(".resultstep").append("STEP 2 - ("+  op.number_of_hr_managers +" * "+ op.ave_hr_staff_gross_salary +" / "+ op.n1_working_hours_per_annum +" ) * "+ op.n3_hours_saved_per_hr_manager  +"  = "+op.step_2_result + "<br/>");*/
      },
      step_3_result : 0,
      step_3 : function(){
        //Calculation 3: Cost Per Annum (Year 1)	(Cost per employee per annum(N4) * Number of Employes)+Set up fee(N5)

        op.step_3_result = (op.n4_cost_per_employee_per_annum * op.number_of_employees ) + op.n5_set_up_fee ;
        op.step_3_result = Math.round(op.step_3_result*100)/100;
        /*$(".resultstep").append("STEP 3 - ("+op.n4_cost_per_employee_per_annum +" * "+ op.number_of_employees +" )  + "+ op.n5_set_up_fee  + " = "+op.step_3_result + "<br/>");*/
      },
      step_4_result : 0,
      step_4 : function(){
        //Calculation 4:  Cost Per Annum (Year 2 + 3)	(Cost per employee per annum(N4) * Number of Employes)

        op.step_4_result = (op.n4_cost_per_employee_per_annum * op.number_of_employees ) ;
        op.step_4_result = Math.round(op.step_4_result*100)/100;
        /*$(".resultstep").append("STEP 4 - ("+  op.n4_cost_per_employee_per_annum +" * "+ op.number_of_employees   +") = " +op.step_4_result + "<br/>");*/
      },
      step_5_result : 0,
      step_5 : function(){
        //Calculation 5:  Return on Investment	(Total Savings per annum-Cost per annum)

        op.step_5_result = (op.step_1_result + op.step_2_result ) - op.step_3_result ;
        op.step_5_result = Math.round(op.step_5_result*100)/100;
       /* $(".resultstep").append("STEP 5 - "+op.step_5_result + "<br/>");*/
      },

      result_field : function(){
        op.result_field_val = ( op.step_3_result / (op.step_1_result + op.step_2_result) ) * 12;
        op.result_field_val = Math.round(op.result_field_val);
        if(parseInt(op.result_field_val)){
          $(op.result_field_class).val(op.result_field_val);
        }
        /*$(".resultstep").append("RESULT  - ("+  op.step_3_result + " / ( "+op.step_1_result +" + "+ op.step_2_result +" ) ) * "+ 12  +"  = "+op.result_field_val + "<br/>");*/
      }

    };

    op = $.extend(op, config);

    op.wrapper = this.selector;

    $(op.wrapper).find('.numbers_only').keyup(function () {
      this.value = this.value.replace(/[^0-9\.]/g,'');
    });

    $(op.result_field_class).val('');

    $(op.wrapper).submit(function(){

      op.number_of_employees = $(op.number_of_employees_class).val();
      op.ave_employee_gross_salary = $(op.ave_employee_gross_salary_class).val();
      op.number_of_hr_managers = $(op.number_of_hr_managers_class).val();
      op.ave_hr_staff_gross_salary = $(op.ave_hr_staff_gross_salary_class).val();

      $(op.result_field_class).val('');

      if(op.number_of_employees != "" && op.ave_employee_gross_salary != "" && op.number_of_hr_managers != "" && op.ave_hr_staff_gross_salary != ""){
        op.n4_n5_value();
        op.step_1();
        op.step_2();
        op.step_3();
        op.step_4();
        op.step_5();
        op.result_field();
      }

      return false;
    });



  };
})(jQuery);







