/* Demo Note:  This demo uses a FileProgress class that handles the UI for displaying the file name and percent complete.
The FileProgress class is not part of SWFUpload.
*/



/* **********************
   Event Handlers
   These are my custom event handlers to make my
   web application behave the way I went when SWFUpload
   completes different tasks.  These aren't part of the SWFUpload
   package.  They are part of my application.  Without these none
   of the actions SWFUpload makes will show up in my application.
   ********************** */

function swfUploadPreLoad()
{
	var self = this;
	var loading = function ()
    {
		document.getElementById("divLoadingContent").style.display = "";

		var longLoad = function () {
			document.getElementById("divLoadingContent").style.display = "none";
			document.getElementById("divLongLoading").style.display = "";
		};
		this.customSettings.loadingTimeout = setTimeout(function () {
				longLoad.call(self)
			},
			15 * 1000
		);
	};
	
	this.customSettings.loadingTimeout = setTimeout( function ()
        {
			loading.call(self);
		},
		1*1000
	);
}

function swfUploadLoaded()
{
	var self = this;
	clearTimeout(this.customSettings.loadingTimeout);
	document.getElementById("divLoadingContent").style.display = "none";
	document.getElementById("divLongLoading").style.display = "none";
	document.getElementById("divAlternateContent").style.display = "none";

	document.getElementById("btnCancel").onclick = function ()
    { 
        self.cancelQueue();
        // Affiche le bouton "Send"
        document.getElementById("btnSend").disabled = true;
    };

    // BMT        
    document.getElementById("btnSend").onclick = function ()
    { 
        self.startUpload();
    };
    // End BMT
}

function swfUploadLoadFailed()
{
	clearTimeout(this.customSettings.loadingTimeout);
	document.getElementById("divLoadingContent").style.display = "none";
	document.getElementById("divLongLoading").style.display = "none";
	document.getElementById("divAlternateContent").style.display = "";
}
   
function fileQueued(file)
{
	try
    {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setStatus("Prêt");
		progress.toggleCancel(true, this);
	}
    
    catch (ex)
    {
		this.debug(ex);
	}

}

function fileQueueError(file, errorCode, message)
{
  try
  {
	if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED)
    {
		alert("Vous tentez d'envoyer trop de fichiers.\n" + (message === 0 ? "Vous avez atteint la taille maximum d'envoi." : "Vous devez sélectionner " + (message > 1 ? "un maximum de " + message + " fichiers." : "0 fichier.")));
		return;
	}

	var progress = new FileProgress(file, this.customSettings.progressTarget);
	progress.setError();
	progress.toggleCancel(false);

	switch (errorCode)
    {
    		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
    			progress.setStatus("Votre fichier est trop gros : maximum 6 Mo !");
    			this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
    			break;
                
    		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
    			progress.setStatus("Impossible d'envoyer un fichier de taille 0 !");
    			this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
    			break;
                
    		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
    			progress.setStatus("Type de fichier invalide !");
    			this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
    			break;
                
    		default:
    			if (file !== null)
                {
    				progress.setStatus("Unhandled Error");
    			}
    			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
    			break;
		}
	}

  catch (ex)
  {
      this.debug(ex);
  }
}

// BMT
function ctrlemail(mail)
{
  var reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
  
  if (reg.test(mail) == true)
	   return true;
  else
     return false;
}
// End BMT


function CheckForm()
{
    var phrase = "";

    // Controle sur le champ nom. & n'est pas autorisé à cause du fait que le nom en envoyé en paramètre du fichier .php
    var reg1 = new RegExp("[&~#µ%!:;?,]","g");    
        
    if ((document.getElementById("pays").value) == "")
    {
        if ((document.getElementById("paysbis").value) == "")
        {
            phrase = '- Veuillez indiquer un pays !';
            document.getElementById("pays").focus();
        }
    }

    if ((document.getElementById("nom").value) == "")
    {
        if ((document.getElementById("photographebis").value) == "")
        {
            phrase = phrase + '\n' + '- Veuillez indiquer votre nom !';
            document.getElementById("nom").focus();
        }
    }

    if ( ((document.getElementById("nom").value).match(reg1)) || ((document.getElementById("photographebis").value).match(reg1)) )
    {
        phrase = phrase + '\n' + '- Caractère non autorisé dans le champ photographe !';
        document.getElementById("nom").focus();
    }

    if ((document.getElementById("email").value) == "")
    {
        phrase = phrase + '\n' + '- Veuillez indiquer une adresse email ! (Elle ne sera pas visible par les visiteurs)';
        document.getElementById("email").focus();
    }
    else if (!(ctrlemail(document.getElementById("email").value)))
    {
        phrase = phrase + '\n' + '- Il y a une erreur dans votre adresse e-mail !';
        document.getElementById("email").focus();
    }
    
    return phrase;
}


function fileDialogComplete(numFilesSelected, numFilesQueued)
{
	try
    {
        // BMT 
		if (numFilesSelected > 0)
    {
      document.getElementById(this.customSettings.cancelButtonId).disabled = false;
      
      var phrase = CheckForm();
      if (phrase != "")
      {
        alert(phrase);
        document.getElementById(this.customSettings.cancelButtonId).disabled = true;
        this.cancelQueue();
      }
      else
      {
        // Affiche le bouton "Cancel All"
        document.getElementById(this.customSettings.cancelButtonId).disabled = false;
        
        // Affiche le bouton "Send"
        document.getElementById("btnSend").disabled = false;
      }
      
      var now = new Date(); 
      var annee = now.getFullYear();

      var hours = now.getHours();
      var minutes = now.getMinutes();
      var seconds = now.getSeconds();
      
      // Controle que la date n'est pas le 1er janvier de l'année en cours
      if ( ((document.getElementById('jour').options[document.getElementById('jour').selectedIndex].value) == 1)
              && ((document.getElementById('mois').options[document.getElementById('mois').selectedIndex].value) == 1)
              && ((document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value) == annee) )
      {
        document.getElementById("jour").focus();
        alert("Etes-vous sûr d'avoir prit cette photo le 1er janvier de cette année ? (Merci de corriger si besoin)");
      }
      
      // Controle que la date choisie n'est pas postérieure à la date du jour
      var choosenDate = new Date( (document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value), 
                                  (document.getElementById('mois').options[document.getElementById('mois').selectedIndex].value)-1, 
                                  (document.getElementById('jour').options[document.getElementById('jour').selectedIndex].value),
                                  hours, minutes, seconds );
      
      if (choosenDate > now)
      {
        document.getElementById("annee").focus();
        alert("Attention, vous avez indiqué une date dans le futur pour la date de prise de vue !");
      }
      
      // alert("Si vous rencontrez des problèmes durant l'envoi, merci de me prévenir : benoit@survoldefrance.fr");
    }
	}

  catch (ex)
  {
    this.debug(ex);
	}
}

function uploadStart(file)
{
    var phrase = CheckForm();
    if (phrase != "")
    {
        alert(phrase);
        document.getElementById(this.customSettings.cancelButtonId).disabled = true;
        this.cancelQueue();
    }
    
	try
    {
        // disable button
		document.getElementById("btnSend").disabled = true;
		    
        // update post param
        var post_params = this.settings.post_params;
        
        // email
       	post_params.email = document.getElementById("email").value;

       	// watermark
        if (document.multiupload.watermark[0].checked == true)
       	   post_params.watermark = "true";
        else
       	   post_params.watermark = "false";
       	   
        // jour
       	post_params.jour = document.getElementById("jour").value;
       	
       	// mois
       	post_params.mois = document.getElementById("mois").value;
       	
       	// année
       	post_params.annee = document.getElementById("annee").value;
       	
        // Add post param
        this.setPostParams(post_params);

        // Sending ...
		var progress = new FileProgress(file, this.customSettings.progressTarget);
	    progress.setStatus("Envoi en cours ... veuillez patienter.");
		progress.toggleCancel(true, this);
	}
    
	catch (ex) {}

	return true;
}



function uploadProgress(file, bytesLoaded, bytesTotal)
{
	try
    {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);

		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setProgress(percent);
		progress.setStatus("Envoi en cours ... veuillez patienter.");
	}
    
    catch (ex)
    {
		this.debug(ex);
	}
}

function uploadSuccess(file, serverData)
{
	try
    {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setComplete();
		progress.setStatus("Envoi terminé.");
		progress.toggleCancel(false);
	}
    
    catch (ex)
    {
		this.debug(ex);
	}
}

function uploadError(file, errorCode, message)
{
	try
    {
		var progress = new FileProgress(file, this.customSettings.progressTarget);
		progress.setError();
		progress.toggleCancel(false);

		switch (errorCode)
        {
		case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
			progress.setStatus("Upload Error: " + message);
			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.UPLOAD_LIMIT_EXCEEDED:
			progress.setStatus("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.FILE_VALIDATION_FAILED:
			progress.setStatus("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:
			// If there aren't any files left (they were all cancelled) disable the cancel button
			if (this.getStats().files_queued === 0)
            {
				document.getElementById(this.customSettings.cancelButtonId).disabled = true;
			}
			progress.setStatus("Envoi annulé");
			progress.setCancelled();
			break;
            
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			progress.setStatus("Envoi stoppé");
			break;
            
		default:
			progress.setStatus("Unhandled Error: " + errorCode);
			this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
			break;
		}
	}
    
    catch (ex)
    {
        this.debug(ex);
    }
}

function uploadComplete(file)
{
	if (this.getStats().files_queued === 0)
  {
    // pays
    if ((document.getElementById("paysbis").value) != "")
      var pays = document.getElementById("paysbis").value;
    else
      var pays = document.getElementById("pays").value;

    // Nom du photographe
    if ((document.getElementById("nom").value) == "")
      var nom = document.getElementById("photographebis").value;
    else
      var nom = document.getElementById("nom").value;
      
    var session_id = document.getElementById("session_id").value;
    
    var redir = "upload_display.php?photographe="+nom+"&pays="+pays+"&session_id="+session_id;

		document.getElementById(this.customSettings.cancelButtonId).disabled = true;
    document.location.href = redir;
	}    
}

// This event comes from the Queue Plugin
function queueComplete(numFilesUploaded)
{
  var status = document.getElementById("divStatus");
  status.innerHTML = numFilesUploaded + " fichier" + (numFilesUploaded === 1 ? "" : "s") + " envoyé" + (numFilesUploaded === 1 ? "" : "s") + ". Veuillez patienter ... redirection automatique.";
}

