// handlers that are called by the swf upload object

// dummy console so the code doesn't throw up when the console is gone
if(!window.console) {
  window.console = new function() {
    this.log = function(str) {};
    this.dir = function(str) {};
  };
}

function swfUploadLoaded ()
{
  if (swfu.settings.debug_enabled)
  {
    console.log('swfUploadLoaded');
  }
}

function fileDialogStart ()
{
  if (swfu.settings.debug_enabled)
  {
    console.log('fileDialogStart');
  }
  
  var txtFileName = jQuery('.flashUpload #flashUploadFilename');
  txtFileName.html('');
  
  this.cancelUpload();
}

function fileQueued (file)
{
  if (swfu.settings.debug_enabled)
  {
    console.log('fileQueued');
  }
  
  var txtFileName = jQuery('.flashUpload #flashUploadFilename');
  txtFileName.html(file.name);
  
  if (enableSubmitButton)
  {
    enableSubmitButton();
  }
}

function fileQueueError (file, errorCode, message)
{
  if (swfu.settings.debug_enabled)
  {
    console.log('fileQueueError');
    console.log(errorCode);
    console.log(message);
  }
  
  try {
    // Handle this error separately because we don't want to create a FileProgress element for it.
    switch (errorCode) {
    case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
      alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
      return;
    case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
      alert("The file you selected is too big.  Please select a smaller file.");
      return;
    case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
      alert("The file you selected is empty.  Please select another file.");
      return;
    case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
      alert("The file you selected is not an allowed file type.");
      return;
    default:
      alert("An error occurred in the upload. Try again later.");
      return;
    }
  } catch (e) {
  }

}

function fileDialogComplete ()
{
  if (swfu.settings.debug_enabled)
  {
    console.log('fileDialogComplete');
  }
}

function uploadProgress (file, bytesLoaded, bytesTotal)
{
  if (swfu.settings.debug_enabled)
  {
    console.log('uploadProgress');
  }
  
  try
  {
    var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
    
    var progress = new FileProgress(file, 'flashUploadProgress');
    
    progress.setProgress(percent);
    progress.setStatus("Uploading...");
  }
  catch (e)
  {
  }
}

function uploadError (file, errorCode, message)
{
  if (swfu.settings.debug_enabled)
  {
    console.log('uploadError');
  }
  
  try {
    
    var txtFileName = jQuery('.flashUpload #flashUploadFilename');
    txtFileName.html('');
    
    var progress = new FileProgress(file, 'flashUploadProgress');
    progress.setError();
    progress.toggleCancel(false);
    
    switch (errorCode) {
    case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
      progress.setStatus("Upload Error");
      this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
      break;
    case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
      progress.setStatus("Upload Failed.");
      this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
      break;
    case SWFUpload.UPLOAD_ERROR.IO_ERROR:
      progress.setStatus("Server (IO) Error");
      this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
      break;
    case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
      progress.setStatus("Security Error");
      this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
      break;
    case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
      progress.setStatus("Upload Cancelled");
      this.debug("Error Code: Upload Cancelled, File name: " + file.name + ", Message: " + message);
      break;
    case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
      progress.setStatus("Upload Stopped");
      this.debug("Error Code: Upload Stopped, File name: " + file.name + ", Message: " + message);
      break;
    }
  } catch (ex) {
  }
  
}

function uploadSuccess (file, serverData, responseReceived)
{
  if (swfu.settings.debug_enabled)
  {
    console.log('uploadSuccess');
    console.log(serverData);
  }
  
  var ele = jQuery('.flashUpload #flashUploadServerFilename');
  ele.val(serverData);
  
  var form = jQuery('.flashUpload #flashUploadServerFilename').parents('form');
  form.submit();
}

function uploadComplete ()
{
  if (swfu.settings.debug_enabled)
  {
    console.log('uploadComplete');
  }
}
