var formChecker = null;
var g_mode;
var g_codice;
var currentTime;
var seconds;
var startseconds;

function swfUploadLoaded() {
	// Uploader Loaded
}

function startUpload ( ) {
	$.get( "/getcodice.php",  { oggetto: $('#oggetto').val(), notifdownload: $('input[name=notificadownloads]:checked').val() , notifcancell: $('input[name=notificacancellazione]:checked').val() , dropbox: $('#dropbox').val() },  function ( data ) {
	  g_codice = data;
	  // document.fileupload.setExtraParameter( "account", data );
	   swfu.setPostParams( {
				   "key" : g_codice + "/${filename}",
  				   "AWSAccessKeyId":"1A0DFCYMPD5BNEPZ8582",
				   "acl":"public-read",
				   "policy": $("#policy").val(),
				   // "policy":"ewoJICAgICAgICAiZXhwaXJhdGlvbiI6ICIyMDEwLTA3LTIyVDExOjQ3OjUyWiIsCgkgICAgICAgICJjb25kaXRpb25zIjogWwoJICAgICAgICB7ImJ1Y2tldCI6ICJkbC5iaWdmaWxlcy5pdCJ9LAoJICAgICAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAiIl0sCgkgICAgICAgIHsiYWNsIjogInB1YmxpYy1yZWFkIn0sCgkgICAgICAgIFsiY29udGVudC1sZW5ndGgtcmFuZ2UiLCAwLCAyMDk3MTUyMDAwXSwKCSAgICAgICAgeyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiAiMjAxIn0sCgkgICAgICAgIFsic3RhcnRzLXdpdGgiLCAiJEZpbGVuYW1lIiwgIiJdLAoJICAgICAgICBbInN0YXJ0cy13aXRoIiwgIiRDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0KCSAgICAgIF0KCX0=",
				   "signature": $("#signature").val(),
				   // "signature":"J1nma2otZVeQqb8Of1mCe5XHlrg=",
				   "success_action_status":"201", 
				   "content-type":"application/octet-stream"
				} );
	   swfu.startUpload();
      $("#codice").val( g_codice );
      $("#boxfile_inner").css({ height: 1, overflow: "hidden" } );
      $("#invia_box").css({ height: 1, overflow: "hidden" } );
      swfu.setButtonDisabled(true);
      swfu.setButtonDimensions(0,0);
      $("#invia_button").hide();
      $("#boxfile_progress").show('slow');
      currentTime = new Date();
      startseconds = currentTime.getTime() / 1000;      
	});
   
   return false;
}

 // Called by the queue complete handler to submit the form
function uploadDone() {
	
}

function fileQueueError(file, errorCode, 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.");
			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
			alert("The file you selected is empty.  Please select another file.");
			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
			alert("The file you choose is not an allowed file type.");
			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}
	} catch (e) {
	}
}

function fileQueued1(file) {
	try {
	   n = (200)*(1024)*1024;
   
      if( file.size > ( n ) &&  (g_mode != 3 ) ){
	     $("#filename1").val("");
	     alert( "Il file selezionato \xE8 " + Math.ceil( Math.ceil( file.size / 1024 ) / 1024 ) + " Mb, \xE8 necessario un account premium per caricare files di queste dimensioni." );
	     location = "/premium";
	     return;
      } 
		$("#filename1").val( file.name );
		$("#filename").val( file.name );
		$("#filesize").val( file.size );
		
	} catch (e) {
	}
}
function fileDialogComplete(numFilesSelected, numFilesQueued) {
   // FilesLoaded
}

function uploadProgress(file, bytesLoaded, bytesTotal) {

	try {
       total = bytesTotal;
       done = bytesLoaded;
       var perc = (done/total)*100;
       var percshow = Math.floor( perc * 100 ) / 100;
       var msg = "Caricati " + Math.round( done / 1024 ) + " su " + Math.round( total / 1024 ) + " Kb - " + percshow + "%";
       currentTime = new Date();
       seconds = ( currentTime.getTime() / 1000 ) - startseconds;
       if( perc > 0 ){
           var speed = done / seconds;
           var remain = Math.round( ( total - done ) / speed );
           if( remain == 0 ) {
             remain = 1;
           }
       }    
       if( remain < 60 ){
         remain_text = remain + " sec ";
       } else {
         mins = Math.floor( remain / 60 );
         if( mins < 60 ) {
            remain_text = mins + " min "
         } else {
            remain_text = Math.floor( mins / 60 ) + " ore, " + ( mins -  ( Math.floor( mins / 60 )*60) ) + " min "
         }
       }
       msg += " Rimanente: " + remain_text;
       $('.pb_text').html( msg );
       $("#pb_progress").css("width",perc+"%"); 
	} catch (e) {
	}
}

function uploadSuccess(file, serverData) {
	try {
	   $("#postform").submit();
	} catch (e) {
	}
}

function uploadComplete(file) {
	try {
		if (this.customSettings.upload_successful) {
			this.setButtonDisabled(true);
			uploadDone();
		} else {
			file.id = "singlefile";	// This makes it so FileProgress only makes a single UI element, instead of one for each file
			var progress = new FileProgress(file, this.customSettings.progress_target);
			progress.setError();
			progress.setStatus("File rejected");
			progress.toggleCancel(false);
			
			var txtFileName = document.getElementById("txtFileName");
			txtFileName.value = "";
			validateForm();

			alert("There was a problem with the upload.\nThe server did not accept it.");
		}
	} catch (e) {
	}
}

function uploadError(file, errorCode, message) {
	try {
		
		if (errorCode === SWFUpload.UPLOAD_ERROR.FILE_CANCELLED) {
			// Don't show cancelled error boxes
			return;
		}
		
		var txtFileName = document.getElementById("txtFileName");
		txtFileName.value = "";
		validateForm();
		
		// Handle this error separately because we don't want to create a FileProgress element for it.
		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
			alert("There was a configuration error.  You will not be able to upload a resume at this time.");
			this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
			return;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			alert("You may only upload 1 file.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			break;
		default:
			alert("An error occurred in the upload. Try again later.");
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			return;
		}

		file.id = "singlefile";	// This makes it so FileProgress only makes a single UI element, instead of one for each file
		var progress = new FileProgress(file, this.customSettings.progress_target);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			if( message == "400" ){
	   			$("#postform").submit();
			}
			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) {
	}
}
