/**
 * Annule tous les fichiers en attente
 **/
function viderListeAttente (InstanceSWFUpload) {
	
	// On arrete l'upload en cours
	InstanceSWFUpload.stopUpload();
	
	// Et on vide la liste d'attente
	var stats;
	do {
		stats = InstanceSWFUpload.getStats();
		InstanceSWFUpload.cancelUpload();
	} while (stats.files_queued !== 0);
}

function flashSwfUploadCharge () {
	// Rien de spécial
}

function avantChoixFichier() {
	// NE SURTOUT PAS UTILISER DE ALERT OU TOUT AUTRE FONCTIONS DEMANDANT UNE ACTION DE LA PART DE L'UTILISATEUR
	
	viderListeAttente (this);
}

function ajoutFichierDansListeAttente(fileObj) {
	try {
		var Progress = new progressUpload(this.customSettings.elementCible, this.customSettings.champForm);
		Progress.forceInitProgress();
		Progress.definirStatus("Attente...");
		Progress.definirNomFichier(fileObj.name);
		Progress.activerAnnulerUpload(this, fileObj.id);
	} 
	catch (ex) { 
		this.debug(ex); 
	}
}

function erreurListeAttente(fileObj, error_code, message) {
	try {
		if (error_code === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
			alert("Vous avez depassé le nombre de fichier à  uploader.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
			return;
		}
		
		var Progress = new progressUpload( this.customSettings.elementCible, this.customSettings.champForm);
		
		switch(error_code) {
			case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
				Progress.definirErreur("Le fichier dépasse le poids maxi authorisé");
				this.debug("Error Code: File too big, File name: " + fileObj.name + ", File size: " + fileObj.size + ", Message: " + message);
				break;
			case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
				Progress.definirErreur("Impossible d'uploader un fichier de 0 byte.");
				this.debug("Error Code: Zero byte file, File name: " + fileObj.name + ", File size: " + fileObj.size + ", Message: " + message);
				break;
			case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
				Progress.definirErreur("Ce format de fichier n'est pas authorisé.");
				this.debug("Error Code: Invalid File Type, File name: " + fileObj.name + ", File size: " + fileObj.size + ", Message: " + message);
				break;
			case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
				Progress.definirErreur("You have selected too many files.  " +  (message > 1 ? "You may only add " +  message + " more files" : "You cannot add any more files."));
				break;
			default:
				if (fileObj !== null) {
					Progress.definirErreur("Erreur inconnue.");
				}
				this.debug("Error Code: " + error_code + ", File name: " + fileObj.name + ", File size: " + fileObj.size + ", Message: " + message);
				break;
		}
	} 
	catch (ex) {
        this.debug(ex);
    }
}

function apresChoixFichier(nbFichersChoisis, nbFichiersAttente) {
	try {
		this.startUpload();
	} 
	catch (ex) {
		this.debug(ex);
	}
}

function debutUpload(file) {
	try {
		console.log(file);
		//--> INITIALISATION DE L'OBJET Progress
		var Progress = new progressUpload( this.customSettings.elementCible, this.customSettings.champForm);
		Progress.definirStatus("Chargement...");
		Progress.definirNomFichier(file.name);
		Progress.activerAnnulerUpload(this, file.id);
	}
	catch (ex) {
	}
	return true;
}

function pendantUpload(file, bytesLoaded, bytesTotal) {
	try {
		var pourCent = Math.ceil((bytesLoaded / bytesTotal) * 100);
		var Progress = new progressUpload( this.customSettings.elementCible, this.customSettings.champForm);
		Progress.majPourcentUpload(pourCent);
		Progress.definirStatus("Chargement... " + pourCent + "%");
		
		if (pourCent == 100) {
			Progress.definirStatus("Traitement en cours...");
		}
	} catch (ex) {
		this.debug(ex);
	}
}

function erreurUpload(file, errorCode, message) {
	try {
		
		var Progress = new progressUpload( this.customSettings.elementCible, this.customSettings.champForm);
		
		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			Progress.definirErreur("Upload Error: " + message);
			this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
			Progress.definirErreur("Configuration Error");
			this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
			Progress.definirErreur("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.definirErreur("Server (IO) Error");
			this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
			Progress.definirErreur("Security Error");
			this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			Progress.definirErreur("Upload limit exceeded.");
			this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
			Progress.definirErreur("File not found.");
			this.debug("Error Code: The file was not found, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
			Progress.definirErreur("Failed Validation.  Upload skipped.");
			this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			Progress.definirErreur("Cancelled");
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			Progress.definirErreur("Stopped");
			break;
		default:
			Progress.definirErreur("Unhandled Error: " + error_code);
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	} catch (ex) {
        this.debug(ex);
    }
}

function succesUpload(file, serverData) {
	try {
		eval(serverData);
		var Progress = new progressUpload( this.customSettings.elementCible, this.customSettings.champForm);
		Progress.traitementTermine(retourSWFUpload);
	} catch (ex) {
		this.debug(ex);
	}
}

function finUpload(file) {
	return ;
}
