var hasProgressBar = new Array();
function showProgressBar(form) {
  var form = $(form);
  if (hasProgressBar[form.attr(name)]) {
    return;
  }
  hasProgressBar[form.attr(name)] = true;
  
  // detect whether there is file to upload
  var hasUpload = false;
  form.find("input[type='file']").each(function(i, el) {
    if (el.value) {
      hasUpload = true;
    }
  });
  
  if (!hasUpload) {return;}

  form.find("input[type='submit']").each(function(i, el) {
    $(el).css("disabled", "disabled");
  });

  var shutter = $(document.createElement('div'));
  var loader = $(document.createElement('div'));

  shutter.css({
    background: "#999999",
    opacity: 0.7,
    position: "absolute",
    "z-index": 98
  });
  shutter.width(form.outerWidth());
  shutter.height(form.outerHeight());
  shutter.css(form.offset());
  shutter.addClass("progressBar-shutter");
  shutter.hide();

  loader.css({
    color: "#000000",
    position: "absolute",
    "font-size": "0.9em",
    "text-align": "center",
    "z-index": 99
  });
  loader.width(form.outerWidth());
  loader.height(form.outerHeight());
  loader.css(form.offset());
  loader.addClass("progressBar-loader");
  loader.hide();
  
  var progressbar = $(document.createElement('div'));
  progressbar.addClass("progressBar");

  $("body").append(shutter);
  $("body").append(loader);
  loader.append(progressbar);

  shutter.fadeIn();
  loader.fadeIn();

  progressbar.progressbar({
	  value: 0
  });

  progressbar.css("position", "absolute");
  progressbar.css("width", "600px")
  progressbar.css("top", (loader.outerHeight() - progressbar.outerHeight()) / 2);
  progressbar.css("left", (loader.outerWidth() - progressbar.outerWidth()) / 2);
  
  var id = form.attr('name');
  var date = new Date();
  id += date.getTime();
  
  var identifier = $(document.createElement('input'));
  identifier.attr('name', 'UPLOAD_IDENTIFIER');
  identifier.attr('type', 'hidden');
  identifier.val(id);
  
  form.prepend(identifier);
  
  $(document).everyTime(1000, function() {
    $.getJSON(fileUploadConfig.script, {id: id}, function(data) {
      progressbar.progressbar({value: (data['bytes_uploaded']/data['bytes_total'])*100});
    });  
  });
}

$(document).ready(function() {
  $("form input[type='file']").closest("form").submit(function() {
    showProgressBar(this);
    //return false;
  });

  // tyhle inputy nevyvolají form.submit
  $("form input[type='image']").click(function() {
    var form = $(this).closest("form");
    if ($(form).find("input[type='file']").size() > 0) {
      showProgressBar(form);
      //return false;
    }
  });
});

