function ucFirst(str) {
  if (str.length > 0) {
    return str[0].toUpperCase() + str.substring(1);
  } else {
    return str;
  }
}

function redirection() {
	if ($('div.redirection').length >= 1)
	{
		lien = $('div.redirection a').attr('href');
		temps = parseInt($('div.redirection a').attr('rel')) * 1000;
		window.setTimeout("location=('"+lien+"');",temps);
	}
}

function supprimer(cible, elementASupprimer) {  
	if (cible.attr('title')) 
		var message = cible.attr('title');
	else
		var message = 'Etes-vous sur de vouloir supprimer cet élément ?';
		
	var lien = cible.attr('href');
	var id = cible.attr('id').substring(0,cible.attr('id').length - 1);
	
	$('<div id="confirmation" title="Confirmation"><p>'+message+'</p></div>').prependTo('body');
	
	$('#confirmation').dialog({
		autoOpen: false,
		modal: true,
		buttons: {
			Supprimer: function() {
				$(this).remove();
				$.ajax({
					url: lien,
					success: function(){
						if (elementASupprimer) id = elementASupprimer;
						if ($('#'+id).get(0).tagName.toLowerCase() == 'tr') $('#'+id).fadeOut('slow');
						else $('#'+id).slideUp('slow');
						
					},
					error: function(){
					  alert("Une erreur est survenue lors de la suppression de l'élément.");
					}
				});
			},
			Annuler: function() {
				$(this).remove();
			}
		}
	}).dialog('open');
}
	

function verification(cible, verifier) { 
	var champ = cible.attr('name');
	
	if(verifier || ( $('label[for='+champ+']').html() && $('label[for='+champ+']').html().indexOf("*") != -1 ) )
  {
		var valeur = cible.val();
		var message;
		
		var parametre = new Array(['vide', 'min', 'minTexte', 'max', 'maxTexte', 'regex', 'regexTexte', 'unique', 'uniqueURL']);
		parametre['vide'] = '';
		parametre['min'] = 0;
		parametre['minTexte'] = '';
		parametre['max'] = 0;
		parametre['maxTexte'] = '';
		parametre['regex'] = '';
		parametre['regexTexte'] = '';
		parametre['unique'] = '';
		parametre['uniqueURL'] = '';
	
		
		
		if (champ.indexOf('prenom') != -1) {
			parametre['vide'] = 'de prénom';
			parametre['min'] = 2;
			parametre['minTexte'] = 'Le prénom est trop court';
			parametre['max'] = 30;
			parametre['maxTexte'] = 'Le prénom est trop long';
		}
		else if (champ.indexOf('nom') != -1) {
			parametre['vide'] = 'de nom';
			parametre['min'] = 2;
			parametre['minTexte'] = 'Le nom est trop court';
			parametre['max'] = 50;
			parametre['maxTexte'] = 'Le nom est trop long';
		}
		else if (champ.indexOf('pseudo') != -1) {
			parametre['vide'] = 'de pseudo';
			parametre['min'] = 2;
			parametre['minTexte'] = 'Le pseudo est trop court';
			parametre['max'] = 50;
			parametre['maxTexte'] = 'Le pseudo est trop long';
		}
		else if (champ.indexOf('identifiant') != -1) {
			parametre['vide'] = 'd\'identifiant';
			parametre['min'] = 2;
			parametre['minTexte'] = 'L\'identifiant est trop court';
			parametre['max'] = 30;
			parametre['maxTexte'] = 'L\'identifiant est trop long';
			if($('label[for='+champ+']').html().indexOf("* ") == -1) {
				parametre['unique'] = "L\'identifiant existe déjà";
				parametre['uniqueURL'] = "ajax/verifications.ajax.php"; }
		}	
		else if (champ.indexOf('motDePasse_confirmation') != -1) {
			if (valeur != $("input[name='motDePasse']").val())
				message = 'Les mots de passe ne correspondent pas';
		}
		else if (champ.indexOf('motDePasse') != -1) {
			parametre['vide'] = 'de mot de passe';
			parametre['min'] = 4;
			parametre['minTexte'] = 'Le mot de passe est trop court';
			parametre['max'] = 32;
			parametre['maxTexte'] = 'Le mot de passe est trop long';
		}
		else if (champ.indexOf('dateDeNaissance') != -1) {
			parametre['vide'] = 'de date de naissance';
			parametre['regex'] = /^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/;
			parametre['regexTexte'] = 'La date de naissance est incorrecte (format : 30/12/1980)';
		}
		else if (champ.indexOf('adresse') != -1) {
			parametre['vide'] = 'd\'adresse';
			parametre['min'] = 5;
			parametre['minTexte'] = 'L\'adresse est trop courte';
			parametre['max'] = 250;
			parametre['maxTexte'] = 'L\'adresse est trop longue';
		}
		else if (champ.indexOf('codePostale') != -1) {
			parametre['vide'] = 'de code postale';
			parametre['regex'] = /^([0-9]{5})$/;
			parametre['regexTexte'] = 'Le code postale est incorrect (format : 38100)';
		}
		else if (champ.indexOf('ville') != -1) {
			parametre['vide'] = 'de ville';
			parametre['min'] = 2;
			parametre['minTexte'] = 'La ville est trop courte';
			parametre['max'] = 50;
			parametre['maxTexte'] = 'La ville est trop longue';
		}
		else if (champ.indexOf('telephone') != -1) {
			parametre['vide'] = 'de telephone';
			parametre['regex'] = /^0[1-68]([-. ]?[0-9]{2}){4}$/;
			parametre['regexTexte'] = 'Le numéro de téléphone est incorrect (format : 06.00.00.00.00)';
		}	
		else if (champ.indexOf('email') != -1) {
			parametre['vide'] = 'd\'adresse mail';
			parametre['max'] = 100;
			parametre['maxTexte'] = 'L\'adresse mail est trop longue';
			parametre['regex'] = /^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
			parametre['regexTexte'] = 'L\'adresse mail est incorrecte (format : info@exemple.fr)';
			if($('label[for='+champ+']').html().indexOf("* ") == -1) {
				parametre['unique'] = "L\'adresse mail existe déjà";
				parametre['uniqueURL'] = "ajax/verifications.ajax.php"; }
		}	
		else if (champ.indexOf('message') != -1) { 
			parametre['min'] = 10;
			parametre['minTexte'] = 'Votre message est trop court';
		}	
		else if (champ.indexOf('titre') != -1) { 
			parametre['vide'] = 'de titre';
			parametre['min'] = 2;
			parametre['minTexte'] = 'Votre titre est trop court';
			parametre['max'] = 50;
			parametre['maxTexte'] = 'La ville est trop longue';				
		}
		else if (champ.indexOf('evaluation') != -1) {
			parametre['vide'] = 'de note';
			parametre['regex'] = /^([1-5]{1})$/;
			parametre['regexTexte'] = 'La note est incorrect';
		}
		else if (champ.indexOf('commentaire') != -1) { 
			parametre['min'] = 20;
			parametre['minTexte'] = 'Votre commentaire est trop court';
		}	
		else if (champ.indexOf('taille') != -1) {
			parametre['vide'] = 'de taille';
			parametre['regex'] = /^([1-2]{1})m([0-9]{2})$/;
			parametre['regexTexte'] = 'La taille est incorrecte (format : 1m70)';
		}
		
		else if (champ.indexOf('poids') != -1) {
			parametre['vide'] = 'de poids';
			parametre['regex'] = /^[0-9][0-9]+$/;
			parametre['regexTexte'] = 'Le poids est incorrect (format : 70)';
		}
		else if (champ.indexOf('capcha') != -1) {
			annee = new Date();
			annee = annee.getFullYear();
			if (annee != valeur) message = 'Vous êtes vraiment un robot ?';
		}
		
		if (parametre['vide'] && !valeur) message = 'Vous n\'avez pas saisi '+parametre['vide'];
		else if (parametre['min'] && valeur.length < parametre['min']) message = parametre['minTexte'];
		else if (parametre['max'] && valeur.length > parametre['max']) message = parametre['maxTexte'];
		else if (parametre['regex'] && !parametre['regex'].test(valeur)) message = parametre['regexTexte'];
		else if (parametre['unique'] && parametre['uniqueURL']) 
		{
			$.ajax({ type: "POST",
   						 url: parametre['uniqueURL'],
   						 data: "champ="+champ+"&valeur="+valeur,
   						 success: function(html){ 
								if(html == 'erreur') message = parametre['unique']; } 
						});
		}
		if (message) afficher(message, champ);
		else 
		{
			afficher('', champ);
			return true;
		}
	}
}


function afficher(message, champ) {
	if (message) //Si il y a un message, on affiche une notification
	{
			// Affichage d'une notification
			if (!$('#notification').length) // Si le div #notification n'existe pas, on le crée
			{
				$('body').append('<div id="notification"></div>');
				$('#notification').css("display", "none").fadeIn("slow");
			}
			
			if (!$('.notification--'+champ).length) // Si l'id du message existe pas, on le crée
			{
				if ( $('#notification').html().indexOf(message) != -1 )  // Si le message existe on ajoute la class
				{
					$("#notification p:contains("+message+")").addClass('notification--'+champ);
				}
				else if (!$('#notification').html()) // Si #notification est vide on fait un fadeIn
				{
					$('#notification').append('<p class="notification--'+champ+'">'+message+'</p>');
					$('.notification--'+champ).css("display", "none").fadeIn("slow");
				}
				else // Sinon un slideDown
				{
					$('#notification').append('<p class="notification--'+champ+'">'+message+'</p>');
					$('.notification--'+champ).css("display", "none").slideDown("slow");
				}
			}
			else // Sinon, on change le message
			{
				if ( $('.notification--'+champ).attr('class').lastIndexOf('notification--') > 15 ) // Si il y a plus d'un attribut on crée un nouveau message et on supprime l'attribut de l'ancien message
				{
					$('.notification--'+champ).removeClass("notification--"+champ);
					$('#notification').append('<p class="notification--'+champ+'">'+message+'</p>');
					$('.notification--'+champ).css("display", "none").slideDown("slow");
				}
				else
					$('.notification--'+champ).html(message).css("display", "none").fadeIn("slow");
			}
	}
	else if ($('.notification--'+champ).length) //Sinon on check si le message existe pour le supprimer
	{ 
		if ( $('.notification--'+champ).attr('class').lastIndexOf('notification--') > 15 ) // Si il y a plus d'un attribut on supprime l'attribut
			{ $('.notification--'+champ).removeClass("notification--"+champ); }
		else if ($('#notification p').length == 1) // Si il y a un message on supprime juste le message, sinon tout le div
			{$('#notification').fadeOut('slow', function() { $(this).remove(); }); }
		else
			{$('.notification--'+champ).slideUp('slow', function() { $(this).remove(); }); }
	}
}