$(function(){ $(document).bind('drop dragover', function (e) { e.preventDefault(); }); $(document).bind('dragover', function () { $('.main').addClass('drop'); }); $(document).bind('dragexit dragleave dragend drop', function () { $('.main').removeClass('drop'); }); var fileupload = $('#fileupload').fileupload({ dataType: 'json', url: 'upload.json', dropZone: $(document), pasteZone: $(document), add: add }); fileupload.bind('fileuploaddone', done); fileupload.bind('fileuploadfail', fail); fileupload.bind('fileuploadprogress', progress); $(window).bind('beforeunload', function (e) { if (xhrCache.length) { var confirmationMessage = 'There are transfers in progress, navigating away will abort them.'; (e || window.event).returnValue = confirmationMessage; // Gecko + IE return confirmationMessage; // Webkit, Safari, Chrome etc. } }); var xhrCache = []; var xhrNb = 0; function add (e, data) { $('.message').hide(); var xhr = data.submit(); $.each(data.files, function(index, file){ file._ID = xhrNb++; xhrCache[file._ID] = xhr; var hasProgressbar = ('FormData' in window); var html = '
  • '; html += '
    ' + file.name + '
    '; html += '
    0%
    '; if (!hasProgressbar) { html += ''; } html += '
    '; if (hasProgressbar) { html += '
    '; } html += '
  • '; var tmpl = $(html); if (!hasProgressbar) { var progress = tmpl.find('.progress'); var bar = progress.find('.bar'); var dots = progress.find('.dots'); function doting() { if (bar.css('width') != '0px') { return; } if (dots.text().length == 3) { dots.text(''); } else { dots.text(dots.text() + '.'); } setTimeout(doting, 750); } setTimeout(doting, 10); } $('.uploads ul').append(tmpl); }); } function done (e, data) { $.each(data.files, function (index, file) { xhrCache.splice(file._ID, 1); $('li[data-file-id=' + file._ID + ']').addClass('done').text('100%'); }); } function progress (e, data) { var prog = Math.ceil(data.loaded / data.total * 100) + '%'; $.each(data.files, function (index, file) { $('li[data-file-id=' + file._ID + '] .progress .bar').css('width', prog).text(prog); }); } function fail (e, data) { console.log('File transfer failed', data.errorThrown, data.textStatus); $.each(data.files, function (index, file) { xhrCache.splice(file._ID, 1); $('li[data-file-id=' + file._ID + ']').addClass('fail').text(''); }); } $('.uploads').delegate('.stop', 'click', stopTransfer); function stopTransfer (e) { var li = $(e.currentTarget).parent('li'); var id = li.data('file-id'); xhrCache[id].abort(); xhrCache.splice(id, 1); li.addClass('fail'); } function resizeThumbnails() { $('.downloads > div').each(function(index, el) { $(this).height(Math.ceil($(this).width()*0.55)); }); } $(document).ready(function() { resizeThumbnails() }); $(window).resize(function(event) { resizeThumbnails(); }); $('a.folder').click(function(event) { $('#overlay').addClass('shown'); $('#modal ul.downloads').empty(); $(this).parent().find('.content > div').clone().appendTo('#modal ul.downloads'); resizeThumbnails(); }); $('#overlay').click(function(event) { $(this).toggleClass('shown'); }); if('backgroundSize' in document.documentElement.style) { $('.icon').addClass('bgz'); } });