"use strict";
var $document = $(document),

  plugins = {
    rdMailForm: $(".rd-mailform"),
    rdInputLabel: $(".form-label"),
    regula: $("[data-constraints]"),
    selectFilter: $("select")
  }; 
/**
 * Initialize All Scripts
 */
$document.ready(function () {
  var isNoviBuilder = window.xMode;
  /**
   * attachFormValidator
   * @description  attach form validation to elements
   */
  function attachFormValidator(elements) {
regula.custom({
      name: "CountyCheck",
      defaultMessage: "At Least One Must Be Selected",
      validator: function(params) {
var oneischecked = 'no';          
 $('.countybox').each(function(i, obj) {
if ($(this).is(':checked')) {     
oneischecked = 'yes';
}
});         
         if(oneischecked === 'yes') return true;
          else return false;
      }
  }); 
      regula.custom({
        name: 'ExtensionMatch',
        defaultMessage: 'File Type must be DOC, DOCX, PDF, PNG, JPEG or JPG',
        validator: function () {
        var fileExtension = ['png', 'jpg', 'pdf', 'doc', 'docx', 'jpeg'];            
       if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {return false;}else{return true;  }
        }
      });      
      
regula.custom({
      name: "EmailsMatch",
      defaultMessage: "The email addresses do not match!",
      params: ["field1", "field2"],
      validator: function(params) {
         var passwordField1 = document.getElementById(params["field1"]);
         var passwordField2 = document.getElementById(params["field2"]);
         if(passwordField1.value === passwordField2.value) return true;
          else return false;
      }
  }); 
          // Custom validator - phone number
      regula.custom({
        name: 'PhoneNumber',
        defaultMessage: 'Invalid phone number format',
        validator: function () {
          if (this.value === '') return true;
          else return /^(\+\d)?[0-9\-\(\) ]{5,}$/i.test(this.value);
        }
      });
      
    for (var i = 0; i < elements.length; i++) {
      var o = $(elements[i]), v;
      o.addClass("form-control-has-validation").after("<span class='form-validation'></span>");
      v = o.parent().find(".form-validation");
      if (v.is(":last-child")) {
        o.addClass("form-control-last-child");
      }
    }

    elements
      .on('input change propertychange blur', function (e) {
        var $this = $(this), results;

        if (e.type != "blur") {
          if (!$this.parent().hasClass("has-error")) {
            return;
          }
        }

        if ($this.parents('.rd-mailform').hasClass('success')) {
          return;
        }

        if ((results = $this.regula('validate')).length) {
          for (i = 0; i < results.length; i++) {
			  $this.css('border-color', '#ff0000');
			$this.css('outline', '2px solid #ff0000');/**/
            $this.siblings(".form-validation").text(results[i].message).parent().addClass("has-error")
          }
        } else {
			$this.css('border-color', '#000000');/**/
        	$this.css('outline', '2px solid #000000');/**/
  $this.siblings(".form-validation").text("").parent().removeClass("has-error")
        }
      })
      .regula('bind');

    var regularConstraintsMessages = [
      {
        type: regula.Constraint.Required,
        newMessage: "This text field is required."
      },
      {
        type: regula.Constraint.Email,
        newMessage: "This email is not a valid email."
      },
      {
        type: regula.Constraint.Numeric,
        newMessage: "Only numbers are required"
      },
      {
        type: regula.Constraint.Checked,
        newMessage: "The check box needs to be checked"
      },
      {
        type: regula.Constraint.Selected,
        newMessage: "Please choose an option."
      }
    ];


    for (var i = 0; i < regularConstraintsMessages.length; i++) {
      var regularConstraint = regularConstraintsMessages[i];

      regula.override({
        constraintType: regularConstraint.type,
        defaultMessage: regularConstraint.newMessage
      });
    }
  }

  /**
   * isValidated
   * @description  check if all elemnts pass validation
   */
  function isValidated(elements) {
    var results, errors = 0;
    if (elements.length) {
      for (j = 0; j < elements.length; j++) {
        var $input = $(elements[j]);
        if ((results = $input.regula('validate')).length) {
          for (k = 0; k < results.length; k++) {
            errors++;
			$input.css('border-color', '#ff0000');/**/
			$input.css('outline', '2px solid #ff0000');/**/
            $input.siblings(".form-validation").text(results[k].message).parent().addClass("has-error");
          }
        } else {
		$input.css('border-color', '#000000');/**/
			$input.css('outline', '2px solid #000000');/**/
          $input.siblings(".form-validation").text("").parent().removeClass("has-error")
        }
      }
      return errors == 0;
    }
    return true;
  }

/* RD Input Label
   * @description Enables RD Input Label Plugin
   */
  if (plugins.rdInputLabel.length) {
    plugins.rdInputLabel.RDInputLabel();
  }

  /**
   * Regula
   * @description Enables Regula plugin
   */
  if (plugins.regula.length) {
    attachFormValidator(plugins.regula);
  }

  /**
   * RD Mailform
   * @version      3.0.0
   */
  if (plugins.rdMailForm.length) {
    var i, j, k,
      msg = {
        'MF000': 'Successfully sent!!',
        'MF001': 'Recipients are not set!',
        'MF002': 'Form will not work locally!',
        'MF003': 'Please, define email field in your form!',
        'MF004': 'Please, define type of your form!',
        'MF005': 'We could not find your email address, please try another address',
        'MF006': 'Your password has been reset, please check your email for the new password',
        'MF007': 'There was a problem with your username and password, please try again',
        'MF008': 'Your email address already has an account. Please try another address or log in with your active account',
        'MF009': 'Successfully Sent!!',
        'MF010': 'Successfully Logged In!!',
        'MF011': 'Successfully Logged In!!',
        'MF012': 'Your profile has been updated.',
        'MF013': 'Your profile has been updated.',
        'MF014': 'Your job posting has been updated.',
        'MF015': 'Your claim has been sumbitted.',
        'MF016': 'Successfully Logged In!!',
        'MF254': 'Something went wrong with PHPMailer!',
        'MF255': 'Aw, snap! Something went wrong.'
      }

    for (i = 0; i < plugins.rdMailForm.length; i++) {
      var $form = $(plugins.rdMailForm[i]),
        formHasCaptcha = false;

      $form.attr('novalidate', 'novalidate').ajaxForm({
        data: {
          "form-type": $form.attr("data-form-type") || "contact",
          "counter": i
        },
        beforeSubmit: function (arr, $form, options) {
          if (isNoviBuilder)
            return;
			var password = $("#password").val();
			var confirmationpassword = $("#confirmationpassword").val();
var passwordsame = "yes";			
if(password || confirmationpassword){
if(password != confirmationpassword){ 
passwordsame = "no";
alert("Your passwords do not match!");
}			
}
$('[name="resume"]').css({"border-color": "none", "outline": " none"});
$('[name="resume"]').siblings().remove(".form-validation");
var alreadyworking = 'yes';    
var needresume = "no";            
var tttt = $("[name='alreadyhired']:checked").val();       
if(tttt=='no'){
var highlight = $('[name="highlights"]').val();    
if(highlight == ""){ 
    alreadyworking = 'no';
$('[name="highlights"]').css({"border-color": "rgb(255, 0, 0)", "outline": " rgb(255, 0, 0) solid 2px"});
    $('[name="highlights"]').addClass("form-control-has-validation").after("<span class='form-validation'>This text area is required</span>");
}else{
    $('[name="highlights"]').css({"border-color": "rgb(0, 0, 0)", "outline": " rgb(0, 0, 0) solid 2px"});
    $('[name="highlights"]').siblings().remove(".form-validation");
}
    
    
if($('#education3:checked').val() || $('#education2:checked').val()){  
needresume = "yes";     
        let files = $("input[name='resume']")[0].files.length;
         if (files != 0) {
$('[name="resume"]').css({"border-color": "none", "outline": " none"});
$('[name="resume"]').siblings().remove(".form-validation");
needresume='no';             
         } else {
$('[name="resume"]').css({"border-color": "rgb(255, 0, 0)", "outline": " rgb(255, 0, 0) solid 2px"});
$('[name="resume"]').addClass("form-control-has-validation").after("<span class='form-validation'>File Type must be DOC, DOCX or PDF</span>");
needresume='yes';
         }  
}    
}else{
$('[name="highlights"]').css({"border-color": "rgb(0, 0, 0)", "outline": " rgb(0, 0, 0) solid 2px"});
    $('[name="highlights"]').siblings().remove(".form-validation");
}            
          var form = $(plugins.rdMailForm[this.extraData.counter]),
inputs = form.find("[data-constraints]"),
            output = $("." + form.attr("data-form-output")),
            captchaFlag = true;
          output.removeClass("active error success");

          if (isValidated(inputs) && passwordsame == "yes" && alreadyworking=="yes" && needresume=='no') {
            if (output.hasClass("snackbars")) {
              output.html('<span>Sending</span>');
              output.addClass("active");
            }
          } else {
            return false;
          }
        },
        error: function (result) {
          if (isNoviBuilder)
            return;

          var output = $("." + $(plugins.rdMailForm[this.extraData.counter]).attr("data-form-output")),
            form = $(plugins.rdMailForm[this.extraData.counter]);

          output.text(msg[result]);
          form.removeClass('form-in-process');

          if(formHasCaptcha) {
            grecaptcha.reset();
          }
        },
        success: function (result) {
          if (isNoviBuilder)
            return;

          console.log(result);

          var form = $(plugins.rdMailForm[this.extraData.counter]),
            output = $("." + form.attr("data-form-output"));

          form
            .addClass('success')
            .removeClass('form-in-process');

          if(formHasCaptcha) {
            grecaptcha.reset();
          }
//alert(result);
result = result.length === 5 ? result : 'MF255';
          output.text(msg[result]);
//////////////////claim starts here////////////////////////////////		 
         if (result === "MF015") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		  window.location.replace("submit_claim_thankyou.php");
		 }
//////////////////claim ends here////////////////////////////////	
//////////////////job posting update starts here////////////////////////////////		 
         if (result === "MF014") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////job posting update ends here////////////////////////////////	
//////////////////employer profile update starts here////////////////////////////////		 
         if (result === "MF013") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////employer profile update ends here////////////////////////////////	
	  
//////////////////employee profile update starts here////////////////////////////////		 
         if (result === "MF012") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////employee profile update ends here////////////////////////////////	
		  
//////////////////login as employee starts here////////////////////////////////		 
         if (result === "MF010") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		  window.location.replace("student.php");
		 }
//////////////////login as employee ends here////////////////////////////////	
//////////////////login as yearly employer starts here////////////////////////////////		 
         if (result === "MF011") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		  window.location.replace("employer.php");
		 }
//////////////////login as yearly employer ends here////////////////////////////////	
//////////////////login as default employer starts here////////////////////////////////		 
         if (result === "MF016") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		  window.location.replace("employer_apply.php");
		 }
//////////////////login as default employer ends here////////////////////////////////	
//////////////////reset password starts here////////////////////////////////		 
         if (result === "MF009") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		  window.location.replace("purchase_thankyou.php");
		 }
//////////////////reset password ends here////////////////////////////////	
//////////////////reset password starts here////////////////////////////////		 
         if (result === "MF008") {
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////reset password ends here////////////////////////////////		 
		  
//////////////////reset password starts here////////////////////////////////		 
         if (result === "MF006") {
           form.clearForm();
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////reset password ends here////////////////////////////////		 
		  
//////////////////email address does not exist error starts here////////////////////////////////		 
         if (result === "MF005") {
           form.clearForm();
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////email address does not exist error ends here////////////////////////////////		 
		  
//////////////////username/password error starts here////////////////////////////////		 
         if (result === "MF007") {
           form.clearForm();
          form.find('input, textarea').blur();
          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
		 }
//////////////////username/password error ends here////////////////////////////////		 
          if (result === "MF000") {
            if (output.hasClass("snackbars")) {
              output.html('<span>' + msg[result] + '</span>');
	/////////////////clear form and remove snackbar		  
 form.clearForm();
          form.find('input, textarea').blur();

          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);			  
if($form.attr("data-form-type")=="login"){
window.location.replace("purchase.php");
}		  
if($form.attr("data-form-type")=="update"){
window.location.replace("update_thankyou.php");
}		  
if($form.attr("data-form-type")=="employerregistration"){
window.location.replace("employer_registration_thankyou.php");
}		  
if($form.attr("data-form-type")=="employeeregistration"){
window.location.replace("student_registration_thankyou.php");
}		  
            } else {
              output.addClass("active success");
            }
          } else {
            if (output.hasClass("snackbars")) {
              output.html(' <p class="snackbars-left"><span>' + msg[result] + '</span></p>');
            } else {
              output.addClass("active error");
            }
          }

          if( form.find( 'select' ) ) plugins.selectFilter.select2( 'val', '' );

          form.clearForm();
          form.find('input, textarea').blur();

          setTimeout(function () {
            output.removeClass("active error success");
            form.removeClass('success');
          }, 3500);
        }
      });
    }
  }


});

