$.validator.addMethod("startDate", function(value,element) {
  var day   = $('#start_date_day').val(),
      month = $('#start_date_month').val(),
      year  = $('#start_date_year').val();
  
  return !/Invalid|NaN/.test(new Date(month + '/' + day + '/' + year));
});

$.validator.addMethod("completeDate", function(value,element) {
  var day   = $('#complete_date_day').val(),
      month = $('#complete_date_month').val(),
      year  = $('#complete_date_year').val();
      
  return !/Invalid|NaN/.test(new Date(month + '/' + day + '/' + year));
});

$(document).ready(function () {
  var contact_form = $('#sullivan_contact_form');

  if( contact_form.length ) {
    contact_form.validate({
//      debug: true,
      errorPlacement: function(error,element) {
        var id = element.attr('id');
        if(id == "prefix") {
          error.insertAfter("#phone");
        }
        else if( id == "start_date_month" || id == "start_date_day" ) {
          error.insertAfter("#start_date_year");
        }
        else if( id == "complete_date_month" || id == "complete_date_day" ) {
          error.insertAfter("#complete_date_year");
        }
        else {
          error.insertAfter(element);
        }
      },
      messages: {
        first_name: "First Name is required",
        last_name: "Last Name is required",
        company: "Company is required",
        address: "Address is required",
        city: "City is required",
        state: "State is required",
        zip: "Zip is required",
        prefix: "Area Code/Prefix is required",
        phone: "Phone Number is required",
        email: "Email is required",
        industry: "Industry is required",
        industry_other: "Please describe your industry",
        project_type: "Project Type is required",
        project_type_other: "Please describe your project",
        services: "Services is required",
        sq_feet: "Please enter the sq. footage",
        budget: "Please enter a value for your budget",
        start_date_month: "Please enter a start month",
        start_date_day: "Please enter a start day",
        start_date_year: "Please enter a start year and make certain your full date is valid",
        complete_date_month: "Please enter a completion month",
        complete_date_day: "Please enter a completion day",
        complete_date_year: "Please enter a completion year and make certain your full date is valid"
      },
      rules: {
        first_name: "required",
        last_name:  "required",
        company: "required",
        address: "required",
        city:  "required",
        state: "required",
        zip:    { required: true, digits: true },
        prefix: { required: true, digits: true },
        phone: "required",
        email: { required: true, email: true },
        industry: "required",
        industry_other: {
          required: function(element) {
            return $('#industry').val() == "Other";
          }
        },
        project_type: "required",
        project_type_other: {
          required: function(element) {
            return $('#project_type').val() == "Other";
          }
        },
        services: "required",
        sq_feet: { required: true, digits: true },
        budget: "required",
        start_date_month: { required: true },
        start_date_day:   { required: true },
        start_date_year:  { required: true, startDate: true },
        complete_date_month: { required: true },
        complete_date_day:   { required: true },
        complete_date_year:  { required: true, completeDate: true }
      }
    });
  }
});
