/*
 * Define our handlers used by our pages/upload.php code.
 */

function uploadToken() {
  return MD5((new Date().getTime()) + ":" + Math.random());
}

var swfUploadHandlers = {
  fileQueued: function(file) {
    var progress = new FileProgress(file, this.customSettings.progressTarget);
    progress.setStatus("Pending...");
    progress.toggleCancel(true, this);
  },


  fileQueueError: function(file, error, message) {
    alert("Unable to upload " + file.name + ", " + message);
  },


  fileDialogComplete: function(numFilesSelected, numFilesQueued) {
    if (numFilesSelected > 0) {
      $('#' + this.customSettings.cancelButtonId).disabled = false;
    }

    this.startUpload();
  },


  uploadStart: function(file) {
    var progress = new FileProgress(file, this.customSettings.progressTarget);
    progress.setStatus("Uploading...");
    progress.toggleCancel(true, this);

    var token = uploadToken();
    this.addPostParam('key', token + "/${filename}");
    this.addPostParam('x-amz-meta-token', token);
  },

  uploadProgress: function(file, bytesLoaded, bytesTotal) {
    var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
    var progress = new FileProgress(file, this.customSettings.progressTarget);

    progress.setProgress(percent);
    progress.setStatus("Uploading... " + percent + "% complete");
  },

  uploadSuccess: function(file, serverData) {
    var key = serverData.replace(/\n/g, ' ').replace(/^.*<Key>(.*?)<\/Key>.*$/m, '$1');
    var cs  = this.customSettings;
    $.get(APP_URI + "callbacks/s3_post", {key: key},
          function() {
            var progress = new FileProgress(file, cs.progressTarget);
            progress.setComplete();
            progress.toggleCancel(false);
            progress.setStatus("Complete.");
          });
  },

  uploadError: function(file, errorCode, message) {
    var progress = new FileProgress(file, this.customSettings.progressTarget);
    progress.setError();
    progress.toggleCancel(false);
    progress.setStatus("Upload Failed: " + message + " (" + errorCode + ")");
  },

  uploadComplete: function(file) {
  }

};










