Edit in JSFiddle

var func = {
  data: {
    form: function($, res, src, reaction) { // "jquery", 'data/result', 'data/source', 'helpers/reactions'
      return function(id, otherObjs) {
        var ret = {
          form: $('#' + id),
          source: src(id),
          result: res(id),
          'reactions': new reaction('#' + id)
        };
        if (otherObjs) {
          for (var x in otherObjs) {
            ret[x] = otherObjs[x];
          }
        }
        return ret;
      }
    },
    result: function($) {
      return function(id) {
        return $('#' + id + ' [name=result]');
      }
    },
    source: function($) {
      return function(id) {
        return $('#' + id + ' [name=source], #' + id + ' [name="source[]"]');
      }
    }
  },
  helpers: {
    loading: function($) {
      return function(parent_id) {
        var parent = $('#' + parent_id);
        var progress = $('<div><div><span class="glyphicon glyphicon-refresh refresh-animate" data-role="animation"></span> <span data-role="msg">Apdorojama...</span></div></div>');
        progress.hide();
        progress.msg = function(msg) {
          $('[data-role="msg"]', progress).html(msg);
        };
        progress.start = function(msg) {
          if (msg) {
            progress.msg(msg);
          }
          progress.show();
          parent.hide();
        };
        progress.stop = function() {
          parent.show();
          progress.hide();
        };
        parent.after(progress);
        return progress;
      };
    },
    reactions: function($) {
      return function(owner) {
        var obj = $(owner);
        this.error = function(error) {
          if (!error.split) {
            return;
          }
          var prefix = 'error' + error.split('-').map(function(txt) {
            return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
          }).join('');
          switch (obj.data(prefix + 'Action')) {
            case 'alert':
              alert(obj.data(prefix + 'Msg'));
              break;
            case 'show':
              $(obj.data(prefix + 'Target')).show();
              break;
          }
        };
      };
    }
  }
};

//download.js v3.1, by dandavis; 2008-2015. [CCBY2] see http://danml.com/download.html for tests/usage
(function(f, a) {
  "function" == typeof define && define.amd ? define([], a) : "object" == typeof exports ? module.exports = a() : f.download = a()
})(this, function() {
  return function(f, a, b) {
    function n(l) {
      var a = l.split(/[:;,]/);
      l = a[1];
      var a = ("base64" == a[2] ? atob : decodeURIComponent)(a.pop()),
        c = a.length,
        b = 0,
        d = new Uint8Array(c);
      for (b; b < c; ++b) d[b] = a.charCodeAt(b);
      return new g([d], {
        type: l
      })
    }

    function k(a, b) {
      if ("download" in d) return d.href = a, d.setAttribute("download", m), d.innerHTML = "downloading...", h.body.appendChild(d), setTimeout(function() {
        d.click(), h.body.removeChild(d), !0 === b && setTimeout(function() {
          e.URL.revokeObjectURL(d.href)
        }, 250)
      }, 66), !0;
      if ("undefined" != typeof safari) return a = "data:" + a.replace(/^data:([\w\/\-\+]+)/, "application/octet-stream"), !window.open(a) && confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.") && (location.href = a), !0;
      var c = h.createElement("iframe");
      h.body.appendChild(c), b || (a = "data:" + a.replace(/^data:([\w\/\-\+]+)/, "application/octet-stream")), c.src = a, setTimeout(function() {
        h.body.removeChild(c)
      }, 333)
    }
    var e = window;
    b = b || "application/octet-stream";
    var c = f,
      h = document,
      d = h.createElement("a");
    f = function(a) {
      return String(a)
    };
    var g = e.Blob || e.MozBlob || e.WebKitBlob || f,
      g = g.call ? g.bind(e) : Blob,
      m = a || "download";
    "true" === String(this) && (c = [c, b], b = c[0], c = c[1]);
    if (String(c).match(/^data\:[\w+\-]+\/[\w+\-]+[,;]/)) return navigator.msSaveBlob ? navigator.msSaveBlob(n(c), m) : k(c);
    a = c instanceof g ? c : new g([c], {
      type: b
    });
    if (navigator.msSaveBlob) return navigator.msSaveBlob(a, m);
    if (e.URL) k(e.URL.createObjectURL(a), !0);
    else {
      if ("string" == typeof a || a.constructor === f) try {
        return k("data:" + b + ";base64," + e.btoa(a))
      } catch (p) {
        return k("data:" + b + "," + encodeURIComponent(a))
      }
      b = new FileReader, b.onload = function(a) {
        k(this.result)
      }, b.readAsDataURL(a)
    }
    return !0
  }
});

// main

var main = function($, jForm, loading, download) {
  var obj = jForm('tool'),
    loader = loading('tool'),
    another_files = $('#tool .another_files').first(),
    update_another_file_last = function() {
      var last = another_files.find('.file').last(),
        removeBtn = last.find('.remove'),
        input = last.find('[type=file]').first();
      removeBtn.prop('disabled', true);
      removeBtn.click(function() {
        last.remove();
        var files = another_files.find('.file');
        if (files.length == 0) {
          another_files.find('.block').append(files.last().clone());
          update_another_file_last();
        }
      });
      input.one('change', function() {
        removeBtn.prop('disabled', false);
        another_files.find('.block').append(last.clone());
        update_another_file_last();
      });
    }

  update_another_file_last();
  another_files.show();

  obj.form.submit(function(e) {
    e.preventDefault();
    loader.start();
    var formData = new FormData($('#tool')[0])
    $.ajax({
      type: "POST",
      async: true,
      url: 'https://redhat.polarhome.com:794/~int21/php-scripts-for-mekdrops-fsfiddle-tools/pasleptas-rar-archyvas-paveiksliuke.php',
      data: formData,
      dataType: 'json',
      cache: false,
      contentType: false,
      processData: false,
      crossDomain: true,
      success: function(data, textStatus, jqXHR) {
        download(data[1], data[0]);
        loader.stop();
      },
      error: function(jqXHR, textStatus, errorThrown) {
        alert('ERR: ' + errorThrown);
        loader.stop();
      }
    });
  });
};

// "jquery", "data/form", "helpers/loading", "download"
main($, func.data.form($, func.data.result($), func.data.source($), func.helpers.reactions($)), func.helpers.loading($), download);
<div class="full-post container">
  <h3><a href="#" rel="bookmark" title="Permanent Link to Paslėptas RAR archyvas paveiksliuke">Paslėptas RAR archyvas paveiksliuke</a></h3>
  <!--meta-->


  <div class="full-post-content">
    <p>Dėl tam tikrų RAR archyvų formato savybių, juos galima paslėpti paveiksliukuose (vėliau tuos paveiksliukus galima atsidaryti su bet kokiu RAR archyvatoriumi). Šis įrankis būtent ir skirtas tam, kad paprasčiau būtų galima tai padaryti. Tereikia užpildyti
      formą ir paspausti <b>Paslėpti</b> mygtuką. Paslėptas RAR archyvas paveiksliuke netrukus bus atsiųstas.</p>
    <form id="tool" class="form-horizontal" action="javascript://" enctype="multipart/form-data" method="post">
      <fieldset>
        <legend>Šaltinis</legend>
        <div class="form-group">
          <label class="control-label col-sm-4" for="source_img">Paveiksliukas <span data-role="tooltip" class="label label-info" title="Tinka tik *.jpeg;*.gif;*.png failų formatai"><i class="fa fa-info "></i></span></label>
          <div class="col-sm-8 input-el">
            <input accept="image/*" name="source[]" id="source_img" type="file" required="required" class="form-control">
          </div>
        </div>
        <div class="another_files" style="">
          <div class="form-group">
            <label class="control-label col-sm-4">Failai, kuriuos norite paslėpti <span data-role="tooltip" class="label label-info" title="Failų formatai nesvarbūs"><i class="fa fa-info "></i></span></label>
            <div class="col-sm-8 input-el">
              <div class="block">
                <div class="input-group file">
                  <input name="source[]" type="file" class="form-control">
                  <div class="input-group-btn">
                    <button class="remove btn btn-warning" type="button" disabled="">–</button>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <p>
          <button type="submit" class="btn btn-primary">Paslėpti</button>
        </p>
      </fieldset>
    </form>
    <div style="display: none;">
      <div><span class="glyphicon glyphicon-refresh refresh-animate" data-role="animation"></span> <span data-role="msg">Apdorojama...</span></div>
    </div>
  </div>

</div>