
var Quote = {

  stShelby: null,
  stTenn: null,
  stMiss: null,

  errorCheck:function() {

    var errors = false;

    $("input[type=text]").each(function(i, o)
    {

      if(!$(o).val().length) {
        errors = true;
        $("#" + $(o).attr('id') + "_label").addClass("error");
        $("#" + $(o).attr('id') + "_message").html("This is a required field.");
      } else {
        $("#" + $(o).attr('id') + "_label").removeClass("error");
        $("#" + $(o).attr('id') + "_message").html("");
      }

    });

    if(!$("#state").val().length) {
      errors = true;
      $("#state_label").addClass("error");
      $("#state_message").html("This is a required field.");
    } else {
      $("#state_label").removeClass("error");
      $("#state_message").html("");
    }

    var radio_checked = false;
    $("input[name=title_search]").each(function(i, o)
    {
      if($(o).attr('checked') == true) {
        radio_checked = true;
      }
    });

    if(!radio_checked) {
      errors = true;
      $("#title_search_label").addClass("error");
      $("#title_search_message").html("This is a required field.");
    } else {
      $("#title_search_label").removeClass("error");
      $("#title_search_message").html("");
    }

    if( !$("#lender_email_label").hasClass("error") &&
        !$("#lender_email").val().match(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$/)) {
      errors = true;
      $("#lender_email_label").addClass("error");
      $("#lender_email_message").html("This is not a valid email address.");
    }

    var sales_price = parseFloat($("#price").val().replace(/[$,]/g, ''));
    if( (!$("#price_label").hasClass("error") &&
        isNaN(sales_price)) ||
        $("#price").val().match(/[a-zA-Z]/)) {
      errors = true;
      $("#price_label").addClass("error");
      $("#price_message").html("This must be a dollar value.");
    }

    var loan_amount = parseFloat($("#loan_amount").val().replace(/[$,]/g, ''));
    if( (!$("#loan_amount_label").hasClass("error") &&
        isNaN(loan_amount)) ||
        $("#loan_amount").val().match(/[a-zA-Z]/)) {
      errors = true;
      $("#loan_amount_label").addClass("error");
      $("#loan_amount_message").html("This must be a dollar value.");
    }

    if(errors == false) {
      Quote.recalculate();
    }

  },

  getRates:function(which) {

    switch($("#state").val()) {
    case "st_shelby":
      var data = Quote.stShelby;
      break;
    case "st_tenn":
      var data = Quote.stTenn;
      break;
    case "st_miss":
      var data = Quote.stMiss;
      break;
    }

    if($("#loan_type").val() == "new" && which != "lenders") {
      var target = parseFloat($("#price").val().replace(/[$,]/g, ''));
    } else {
      var target = parseFloat($("#loan_amount").val().replace(/[$,]/g, ''));
    }

    for(var i = 0; i < data.length; i++) {
      var x = data[i];
      if((target >= x.min) &&
         (target <= x.max)) {
        if( which == "lenders" &&
            $("#state").val() != "st_shelby") {
          return(x.e);
        } else {
          return(x.d);
        }
      }
    }

    return(false);

  },

  handleData:function(data) {

    eval(data);

    if( Quote.stShelby != null &&
        Quote.stTenn != null &&
        Quote.stMiss != null) {
      Quote.showForm();
    }

  },

  init:function() {
    Quote.initializeData();

    $("#loan_type").change(Quote.updateLoanType);
    Quote.updateLoanType();

    $("#calculate").click(Quote.errorCheck);
  },

  initializeData:function() {
    $.get("ajax/get-data.php",
    {
      variable: 'stShelby',
      file: 'st_shelby'
    }, Quote.handleData, 'text');

    $.get("ajax/get-data.php",
    {
      variable: 'stTenn',
      file: 'st_tenn'
    }, Quote.handleData, 'text');

    $.get("ajax/get-data.php",
    {
      variable: 'stMiss',
      file: 'st_miss'
    }, Quote.handleData, 'text');
  },

  recalculate:function() {

    var title_insurance = Quote.getRates('lenders');
    $("#title_insurance").val(title_insurance.toFixed(2));

    var x = $("#state").val() == "st_miss" ? 35 : 50;
    var owner_insurance = Quote.getRates();

    if(owner_insurance != false) {
      owner_insurance = owner_insurance + x - title_insurance;

      if($("#loan_type").val() == "new") {
        $("#owner_insurance").val(owner_insurance.toFixed(2));
      } else {
        $("#owner_insurance").val("0.00");
      }
    } 

    var title_search = $("#quote_form input:radio:checked").val() == "no" ? 0 : 185;
    if($("#state").val() == "st_miss") {


      if($("#loan_type").val() == "new") {
        $("#lender_insurance").val((400 + title_insurance + title_search).toFixed(2));
        $("#recording_charges").val("35.00");
        $("#title_services").val((400 + title_search).toFixed(2));
      } else {
        $("#lender_insurance").val((350 + title_insurance + title_search).toFixed(2));
        $("#recording_charges").val("20.00");
        $("#title_services").val("535.00");
      }

      $("#recording_charges_deed").val("15.00");
      $("#recording_charges_mortgage").val("20.00");

      $("#transfer_taxes").val("0.00");
      $("#transfer_taxes_deed").val("0.00");
      $("#transfer_taxes_mortgage").val("0.00");

    } else {

      if($("#loan_type").val() == "new") {
        $("#lender_insurance").val((550 + title_insurance + title_search).toFixed(2));
        $("#title_services").val((550 + title_search).toFixed(2));
        $("#recording_charges").val("120.00");
      } else {
        $("#lender_insurance").val((450 + title_insurance + title_search).toFixed(2));
        $("#recording_charges").val("105.00");
        $("#title_services").val("635.00");
      }

      $("#recording_charges_deed").val("15.00");
      $("#recording_charges_mortgage").val("105.00");

      if($("#price").val().length && $("#loan_amount").val().length) {
        var sales_price = parseFloat($("#price").val().replace(/[$,]/g, ''));
        var loan_amount = parseFloat($("#loan_amount").val().replace(/[$,]/g, ''));

        if($("#loan_type").val() == "new") {
          var transfer_taxes_deed = ((sales_price / 100) * .37) + 3;
        } else {
          var transfer_taxes_deed = 0;
        }

        var transfer_taxes_mortgage = (((loan_amount - 2000) / 100) * .115) + 3;
        var tax = transfer_taxes_deed + transfer_taxes_mortgage;

        if(!isNaN(tax)) {
          $("#transfer_taxes").val(tax.toFixed(2));
        }
        $("#transfer_taxes_deed").val(transfer_taxes_deed.toFixed(2));
        $("#transfer_taxes_mortgage").val(transfer_taxes_mortgage.toFixed(2));
      }

    }

    if($("#price").attr('disabled') == true) {
      $("#price").attr('disabled', false).val('0');
    }

    $("#quote_form").submit();

  },

  showForm:function() {
    $("#please_wait").hide();
    $("#quote_form").show();
  },

  updateLoanType:function(e) {

    if($("#loan_type").val() == "new") {
      $("#price").val('').attr('disabled', false);
      $("#title_search_no").attr('disabled', false);
      $("#title_search_dunno").attr('disabled', false);
    } else {
      $("#price").val('0').attr('disabled', true);
      $("#title_search_yes").attr('checked', true);
      $("#title_search_no").attr('disabled', true);
      $("#title_search_dunno").attr('disabled', true);
    }

  }

}

