HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/zaklada/html/lib/js/core/donate-form.js
(function ($) {
  $(document).ready(function () {
    const debounce = (func, wait) => {
      let timeout;

      return function executedFunction(...args) {
        const later = () => {
          clearTimeout(timeout);
          func(...args);
        };

        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
      };
    };




    if($("#uploadFile").length > 0) {
      var myDropzone = new Dropzone("div#uploadFile", {
        url: ajaxurl,
        params: {
          order_id: $("#uploadFile").attr('data-order-id'),
          action: "upload_pdf_file",
          hash: $("#uploadFile").attr('data-hash'),
        },
        acceptedFiles: "image/*,application/pdf",
        dictFileTooBig: "Datoteka je prevelika ({{filesize}}). Max veličina: {{maxFilesize}}.",
        dictInvalidFileType: "Nije dozvoljen upload datoteke ovog tipa.",
        autoProcessQueue: false,
        maxFilesize: 10,
        success: function (e, e2) {
          if (e2.success) {
            $("#application-form").fadeOut();
            $("#application-thank-you").fadeIn();
          }
        },
      });
    }



    function findOutDonationType(){
      // ova helper funkcija pomaže kod shvaćanja što je trenutno odabrano
      if( $("#donationType").val() == "0"){ // JEDNOKRATNA DONACIJA
        return 0;
      }else if($("#donationType").val() == "1" && $("#supporterType").val() == "0"){ // PODUPIRATELJ FIZIČKA OSOBA
        return 1;
      }else if($("#donationType").val() == "1" && $("#supporterType").val() == "1") { // PODUPIRATELJ KLUB, DRUŠTVO UDRUGA
        return 2;
      }else if($("#donationType").val() == "1" && $("#supporterType").val() == "2") { // PODUPIRATELJ PRAVNA OSOBA
        return 3
      }
    }
    function getMinimumPayment(){

      var donationType = findOutDonationType();

      if(donationType == 0){ // JEDNOKRATNA DONACIJA
        return 25;
      }else if(donationType == 1){ // PODUPIRATELJ FIZIČKA OSOBA
        return 500;
      }else if(donationType == 2) { // PODUPIRATELJ KLUB, DRUŠTVO UDRUGA
        return 1000;
      }else if(donationType == 3) { // PODUPIRATELJ PRAVNA OSOBA
        return 5000;
      }

    }
    function getRequiredFields() {
      var donationType = findOutDonationType();

      var fields = ["firstName", "lastName", "email", "privacyConfirm"];
      if(donationType == 0){ // JEDNOKRATNA DONACIJA

      }else if(donationType == 1){ // PODUPIRATELJ FIZIČKA OSOBA
        fields.push("publicData", "oib", "address", "addressNumber", "city");
      }else if(donationType == 2) { // PODUPIRATELJ KLUB, DRUŠTVO UDRUGA
        fields.push("publicData", "oib", "address", "addressNumber", "city", "businessName", "supporterSubType");
      }else if(donationType == 3) { // PODUPIRATELJ PRAVNA OSOBA
        fields.push("publicData", "oib", "address", "addressNumber", "city", "businessName");
      }
      return fields;
    }


    function setPreviewFields(){

      var donationType = findOutDonationType();


      $(".form-summary").hide();

      var firstName = getField('firstName').val();
      var lastName = getField('lastName').val();
      var businessName = getField('businessName').val();
      var address = getField('address').val();
      var addressNumber = getField('addressNumber').val();
      var city = getField('city').val();
      var oib = getField('oib').val();
      var email = getField('email').val();
      var message = getField('message').val();

      $("[data-summary='message']").html(message);
      $("[data-summary='email']").html(email);
      $("[data-summary='fullAddress']").html(address + " " + addressNumber);
      $("[data-summary='fullName']").html(firstName + " " + lastName);
      $("[data-summary='businessName']").html(businessName);
      $("[data-summary='oib']").html(oib);
      $("[data-summary='city']").html(city);


      if(donationType == 0){ // JEDNOKRATNA DONACIJA

      }else if(donationType == 1){ // PODUPIRATELJ FIZIČKA OSOBA
        $("[data-summary='fullAddress']").closest(".form-summary").show();
        $("[data-summary='oib']").closest(".form-summary").show();
        $("[data-summary='city']").closest(".form-summary").show();
      }else if(donationType == 2) { // PODUPIRATELJ KLUB, DRUŠTVO UDRUGA
        $("[data-summary='fullAddress']").closest(".form-summary").show();
        $("[data-summary='businessName']").closest(".form-summary").show();
        $("[data-summary='city']").closest(".form-summary").show();
        $("[data-summary='oib']").closest(".form-summary").show();
      }else if(donationType == 3) { // PODUPIRATELJ PRAVNA OSOBA
        $("[data-summary='fullAddress']").closest(".form-summary").show();
        $("[data-summary='businessName']").closest(".form-summary").show();
        $("[data-summary='city']").closest(".form-summary").show();
        $("[data-summary='oib']").closest(".form-summary").show();
      }

    }

    function getAllHideableFields(){
      return ["publicData", "oib", "address", "addressNumber", "city", "businessName", "supporterSubType"];
    }

    function getFieldGroup(fieldName){
      return $("[data-input-name='" + fieldName + "']");
    }
    function getField(fieldName){

      return $(donateForm.find('[name="' + fieldName + '"]'));

    }

    function clearFields(){
      var fields = getAllHideableFields();
      $(fields).each(function(index, value){
        var field = getField(value);
        if((field).attr('type') == "text") {
          field.val('');
        }else if((field).attr('type') == "radio"){
          $(donateForm.find('[name="' + value + '"]:checked')).each(function(){
            $(this).attr('checked', false);
          });
        }
      });
    }


    $("#uploadFileButton").click(function(e){

      myDropzone.processQueue();
    });

    const donateForm = $("#donate-form");
    const stepOne = $("#donation-intro");
    const stepTwo = $("#choose-options");
    const stepChooseSupporterType = $("#supporter-type");
    const stepThree = $("#donation-form-container");
    const stepFour = $("#preview-donation");
    const extraFields = $(".form-extra-fields");
    const extraFieldLabels = $(".extra-field-label");
    const backBtn = $(".step-back");
    let currentStep = 1;
    let donationType = "";
    let donationTypeText = "";


    var firstNameElem = $(donateForm.find('[name="firstName"]'));
    var lastNameElem = $(donateForm.find('[name="lastName"]'));
    var emailElem = $(donateForm.find('[name="email"]'));
    var oibElem = $(donateForm.find('[name="oib"]'));
    var businessNameElem = $(donateForm.find('[name="businessName"]'));
    var addressElem = $(donateForm.find('[name="address"]'));
    var addressNumberElem =  $(donateForm.find('[name="addressNumber"]'));
    var cityElem =  $(donateForm.find('[name="city"]'));




    var selectedPaymentTypeLabel = null;
    var selectedPaymentTypeInput = null;



    const amountTextInput = document.querySelector("#amount-input");


    // const



    $(backBtn).click(function (e) {
      if (currentStep === 1.5) {
        stepChooseSupporterType.hide();
        stepTwo.hide();
        stepOne.show();
        currentStep = 1;
        backBtn.css("visibility", "hidden");
        $(".step-2").removeClass("active");
        return;
      } else if (currentStep === 2) {
        stepTwo.hide();
        stepOne.show();
        $(".step-2").removeClass("active");
        backBtn.css("visibility", "hidden");
        currentStep = 1;
        return;
      } else if (currentStep === 3) {
        stepThree.hide();
        stepTwo.show();
        $(".step-3").removeClass("active");
        currentStep = 2;
        return;
      } else if (currentStep === 4) {
        stepFour.hide();
        stepThree.show();
        $(".step-4").removeClass("active");
        currentStep = 3;
        return;
      }
    });

    // step navigation
    function goToStep(step) {
      if (step === 1) {
        backBtn.css("visibility", "hidden");
        $(".step-2").removeClass("active");
        $(".step-3").removeClass("active");
        $(".step-4").removeClass("active");
        stepFour.hide();
        stepThree.hide();
        stepTwo.hide();
        stepOne.show();
        currentStep = 1;
      } else if (step === 2) {
        $(".step-3").removeClass("active");
        $(".step-4").removeClass("active");
        stepFour.hide();
        stepThree.hide();
        stepTwo.show();
        currentStep = 2;
      } else if (step === 3) {
        $(".step-4").removeClass("active");
        stepFour.hide();
        stepThree.show();
        currentStep = 3;
      }
    }

    $(".step-1-summary").click(function (e) {
      goToStep(1);
    });

    $(".step-2-summary").click(function (e) {
      goToStep(2);
    });

    $(".step-3-summary").click(function (e) {
      goToStep(3);
    });

    $(".step-1").click(function (e) {
      if ($(this).hasClass("active")) {
        goToStep(1);
      }
    });

    $(".step-2").click(function (e) {
      if ($(this).hasClass("active")) {
        goToStep(2);
      }
    });

    $(".step-3").click(function (e) {
      if ($(this).hasClass("active")) {
        goToStep(3);
      }
    });

    function setupFields(){

      var donationType = findOutDonationType();
      var requiredFields = getRequiredFields();
      var hideableFields = getAllHideableFields();

      clearFields();
      $(hideableFields).each(function(index, value){
        getFieldGroup(value).hide();
      });
      $(requiredFields).each(function(index, value){
        getFieldGroup(value).show();
      });

      if(donationType == 0){ // JEDNOKRATNA DONACIJA
          extraFields.hide();
      }else if(donationType == 1){ // PODUPIRATELJ FIZIČKA OSOBA
        extraFields.hide();
      }else if(donationType == 2) { // PODUPIRATELJ KLUB, DRUŠTVO UDRUGA
        extraFields.show();
      }else if(donationType == 3) { // PODUPIRATELJ PRAVNA OSOBA
        extraFields.show();
      }

    }




    $("#one-time-donation").click(function (e) {
      e.preventDefault();
      donationType = "one-time";
      donationTypeText = "Jednokratna donacija";
      stepOne.hide();
      stepTwo.show();

      extraFieldLabels.hide();
      currentStep = 2;
      $("#donationType").val("0");
      $("#supporterType").val("");
      setupFields();
      $(".step-2").addClass("active");
      backBtn.css("visibility", "visible");
    });

    $("#supporter-donation").click(function (e) {
      e.preventDefault();
      $("#donationType").val("1");
      $("#supporterType").val("");
      $(".extra-fields-type-2").show();
      currentStep = 1.5;
      stepOne.hide();
      stepChooseSupporterType.show();
      backBtn.css("visibility", "visible");
      setupFields();
    });

    $(".supporter-btn").click(function (e) {
      if (e.target.id === "support-as-person") {

        $(".extra-fields-type-2").hide();
        extraFieldLabels.hide();
        donationType = "person";
        donationTypeText = "Fizička osoba";



        amountTextInput.value = 500;
        $("#supporterType").val("0");
        setupFields();
      } else if (e.target.id === "support-as-company") {
        extraFields.show();
        extraFieldLabels.show();

        donationType = "company";
        donationTypeText = "Klub, društvo, udruga";

        amountTextInput.value = 1000;
        $("#supporterType").val("1");
        setupFields();
      } else {

        extraFieldLabels.show();
        donationType = "legal-entity";
        donationTypeText = "Pravna Osoba";
        $(".extra-fields-type-2").hide();


        amountTextInput.value = 5000;
        $("#supporterType").val("2");
        setupFields();
      }
      currentStep = 2;
      $(".step-2").addClass("active");
      stepChooseSupporterType.hide();
      stepTwo.show();
    });

    $("#move-to-step-3").click(function (e) {
      e.preventDefault();
      $(".payment-transfer").hide();
      $(".payment-card").hide();
      selectedPaymentTypeLabel = $(donateForm.find(".payment-type__label"));
      selectedPaymentTypeInput = $(donateForm.find('[name="paymentType"]:checked'));
      if (!selectedPaymentTypeInput.length) {
        $(selectedPaymentTypeLabel).addClass("form-error");
      } else {
        $(selectedPaymentTypeLabel).removeClass("form-error");
      }
      if (!selectedPaymentTypeInput.length) {
        return;
      }

      var currentAmount = parseFloat(amountTextInput.value);
      var minPay = getMinimumPayment();
      if(currentAmount < getMinimumPayment()){
        alert("Iznos ne smije biti manji od " + minPay + " kn");
        return;
      }

      if (selectedPaymentTypeInput[0].id === "PaymentTypeOnline") {
        $(".payment-transfer").show();
      } else {
        $(".payment-card").show();
      }
      stepTwo.hide();
      stepThree.show();
      currentStep = 3;
      $(".step-3").addClass("active");
    });


    function validateFields(){


      var requiredFields = getRequiredFields();
      var errors = [];
      $(requiredFields).each(function(index, reqField){
        var fieldGroup = getFieldGroup(reqField);
        var field = getField(reqField);

        var inputType = fieldGroup.attr('data-input-type');
        var validators = JSON.parse(fieldGroup.attr('data-validation'));


        var anyValidatorFailed = false;
        $(validators).each(function(index, validator){
          if(anyValidatorFailed){
            return false;
          }
          if(inputType == "text") {
            if (validator == "required") {

              success = false;

              if(field.val() != ''){
                success = true;
              }


              if(success){
                fieldGroup.removeClass("form-error");
                fieldGroup.find('[data-error-type="' + validator + '"]').hide();
              }else {

                fieldGroup.addClass("form-error");
                fieldGroup.find('[data-error-type="' + validator + '"]').show();
                errors.push(reqField);
                anyValidatorFailed = true;
                return;
              }


            } else if(validator == "eleven-characters"){
              success = false;
              if(field.val().length == 11){
                success = true;

              }
              if(success){
                fieldGroup.removeClass("form-error");
                fieldGroup.find('[data-error-type="' + validator + '"]').hide();
              }else {
                fieldGroup.addClass("form-error");
                fieldGroup.find('[data-error-type="' + validator + '"]').show();
                errors.push(reqField);
                anyValidatorFailed = true;
                return;
              }
            } else if(validator == "numeric-only"){
              success = false;
              if($.isNumeric(field.val())){
                success = true;
              }
              if(success){
                fieldGroup.removeClass("form-error");
                fieldGroup.find('[data-error-type="' + validator + '"]').hide();
              }else {
                fieldGroup.addClass("form-error");
                fieldGroup.find('[data-error-type="' + validator + '"]').show();
                errors.push(reqField);
                anyValidatorFailed = true;
                return;
              }
            }
          }else if(inputType == "radio"){

            if (validator == "required") {
              var success = true;
              if($("[name='" + reqField + "']:checked").length == 0){
                success = false;
              }

              if(success){
                fieldGroup.removeClass("form-error");
              }else {
                fieldGroup.addClass("form-error");
                errors.push(reqField);
                return;
              }
            }

          }else if(inputType == "checkbox"){
            if (validator == "required") {

              var success = false;
              if($("[name='" + reqField + "']:checked").length > 0){
                success = true;
              }

              if(success){
                fieldGroup.removeClass("form-error");
              }else {
                fieldGroup.addClass("form-error");
                errors.push(reqField);
                return;
              }

            }
          }

        });

      });




      if(errors.length){
        return false;
      }else{
        return true;
      }





    }


    $('[name="msg"]').keydown ( function (e) {
      //list of functional/control keys that you want to allow always
      var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];

      if( $.inArray(e.keyCode, keys) == -1) {
        if (checkMaxLength ($(this).val(), 320)) {
          e.preventDefault();
          e.stopPropagation();
        }
      }
    });

    function checkMaxLength (text, max) {
      return (text.length >= max);
    }


    $("#move-to-step-4").click(function (e) {
      e.preventDefault();



     var firstNameValue = getField("firstName").val();
     var lastNameValue = getField("lastName").val();
     var emailValue = getField("email").val();
     var oibValue =  getField("oib").val();
     var message = getField("msg").val();
     var businessNameValue = getField("businessName").val();
     var addressValue = getField("address").val();
     var addressNumberValue = getField("addressNumber").val();
     var cityValue =  getField("city").val();

      var supporterType = null;

      if($("#supporterType").val() == "1") {
        supporterType = $('[name="supporterSubType"]').val();
      }else{
        supporterType = $("#supporterType").val() ;
      }



      var privacyConfirm = false;
      if ($("#privacy_confirm:checked").length > 0) {
        privacyConfirm = true;
      }



      $(".form-donation-amount").html(amountTextInput.value);
      $(".form-donation-type").html(donationTypeText);
      $(".form-full-name").html(firstNameValue + " " + lastNameValue);
      $(".form-email").html(emailValue);
      $(".form-msg").html(message);



      if(!validateFields()){

        $(".donation-main__right").animate({ scrollTop: $(".form-error").height() }, 1000);

        return;
      }
      stepThree.hide();
      stepFour.show();
      setPreviewFields();
      currentStep = 4;
      $(".step-4").addClass("active");

    });



    function handleAmountChange() {
      $(this).val(
        $(this)
          .val()
          .replace(/[^0-9]/g, "")
      );



    }

    function numbersOnly() {
      $(this).val(
        $(this)
          .val()
          .replace(/[^0-9]/g, "")
      );
    }

    if(amountTextInput) {
      amountTextInput.addEventListener("input", handleAmountChange);
    }
    if(document.querySelector("#oib-input")) {
      document.querySelector("#oib-input").addEventListener("input", numbersOnly);
    }

    $("#privacy_confirm").click(function (e) {
      if ($("#privacy_confirm:checked").length > 0) {
        $("#privacy_confirm").closest(".form-group").removeClass("form-error");
      }
    });

    var formSending = false;
    var sendDonation = function (e) {
      e.preventDefault();
      if(formSending) {
        return;
      }

      var customLoader = $(".custom-loader");

      $(customLoader).css("display", "flex");

      var publicData = null;
      if($("[name='publicData']:checked").length > 0){
        publicData = $("[name='publicData']:checked").val();
      }

      formSending = true;


      var firstNameValue = getField("firstName").val();
      var lastNameValue = getField("lastName").val();
      var emailValue = getField("email").val();
      var oibValue =  getField("oib").val();
      var message = getField("msg").val();
      var businessNameValue = getField("businessName").val();
      var addressValue = getField("address").val();
      var addressNumberValue = getField("addressNumber").val();
      var cityValue =  getField("city").val();

      var supporterType = null;

      if($("#supporterType").val() == "1") {
        supporterType = $('[name="supporterSubType"]').val();
      }else{
        supporterType = $("#supporterType").val() ;
      }



      var privacyConfirm = false;
      if ($("#privacy_confirm:checked").length > 0) {
        privacyConfirm = true;
      }

      $.ajax({
        type: "POST",
        dataType: "json",
        url: ajaxurl,
        data: {
          action: "make_order",
          businessName: businessNameValue,
          address: addressValue,
          city: cityValue,
          addressNumber: addressNumberValue,
          firstName: firstNameValue,
          lastName: lastNameValue,
          oib: oibValue,
          selectedAmount: amountTextInput.value,
          selectedDonationType: $("#donationType").val(),
          email: emailValue,
          publicData: publicData,
          message: message,
          supporterType: supporterType,
          selectedPaymentType: selectedPaymentTypeInput.val(),
        },
        success: function (data) {
          if (data.success) {

            $("#form-error-box").html("");
            $("#form-error-box").hide();
            if(selectedPaymentTypeInput.val() == "1") {
              window.location.replace(data.thank_you_url);
            }else{
              window.location.replace(data.payway_url);
            }

          }else{
            var resp = "Slanje nije bilo uspješno došlo je do slijedećih grešaka: <br />";
            $(data.errors).each(function(index, value){
              resp += "- " + value + " <br />";
            });
            resp += "Molimo vas vratite se korak nazad i ispravite navedene greške u unosu."
            $("#form-error-box").html(resp);
            $("#form-error-box").fadeIn();

          }
          formSending = false;
          $(customLoader).hide();
        },
      });
    };

    donateForm.submit(sendDonation);

    $("[name='paymentType']").click(function (e) {
      if ($(".payment-type__content.show").length) {
        $(".payment-type__content.show").hide();
        $(".payment-type__content.show").removeClass("show");
        var elementId = $(e.currentTarget).attr("id");
        $("#" + elementId + "Details").show();
        $("#" + elementId + "Details").addClass("show");
      } else {
        var elementId = $(e.currentTarget).attr("id");
        $("#" + elementId + "Details").show();
        $("#" + elementId + "Details").addClass("show");
      }
    });
  });
})(jQuery);