/* ===== GESTION DES FORMULAIRES ===== */

var fieldNom = 0;
var fieldPrenom = 0;
var fieldSociete = 0;
var fieldLogin = 0;
var fieldPassword = 0;
var fieldConfirmation = 0;
var fieldEmail = 0;
var fieldSocieteJournaliste = 0;
var fieldOldPassword = 0;

var fieldTitre = 0;
var fieldAuteur = 0;
var fieldTexte = 0;
var fieldNomAutre = 0;
var fieldPoste = 0;

var coteNom = 'gauche';
var cotePrenom = 'gauche';
var coteSociete = 'gauche';
var coteLogin = 'gauche';
var coteOldPassword = 'gauche';
var cotePassword = 'gauche';
var coteConfirmation = 'gauche';
var coteEmail = 'gauche';
var coteSocieteJournaliste = 'gauche';

var coteTitre = 'gauche';
var coteAuteur = 'gauche';
var coteTexte = 'gauche';
var coteNomAutre = 'gauche';
var cotePoste = 'gauche';

function initObserver() {
	Event.observe('nom', 'blur', function() { check_nom(false); });
	Event.observe('prenom', 'blur', function() { check_prenom(false); });
}

function initFormulaireObserver() {
	initObserver();
	Event.observe('password_register', 'blur', function() { check_password(false); });
	Event.observe('confirmation_register', 'blur', function() { check_confirmation(false); });
}

function initUpdateObserver() {
	initObserver();
	Event.observe('new_password', 'blur', function() { check_password(false); });
	Event.observe('new_password_confirmation', 'blur', function() { check_confirmation(false); });
}

/* --- Utilisateur --- */

function initFormulaireUser() {
	initFormulaireObserver();
	Event.observe('email', 'blur', function() { check_email('user', false); });
	Event.observe('login_register', 'blur', function() { check_login('user', false); });
}

function initUpdateUser() {
	initUpdateObserver();
	
	check_nom(true);
	check_prenom(true);
	check_login('user', true);	
	check_email('user', true);
	
	Event.observe('email', 'blur', function() { check_email('user', false); });
	Event.observe('login', 'blur', function() { check_login('user', false); });
	Event.observe('old_password', 'blur', function() { check_old_password('user', false); });
}

function checkFormUser() {
	check_nom(true);
	check_prenom(true);
	check_email('user', true);
	check_login('user', true);			
	check_password(true);
	check_confirmation(true);

	if(fieldNom == 1 && fieldPrenom == 1 && fieldEmail == 1 && fieldLogin == 1 && fieldPassword == 1 && fieldConfirmation == 1) {
		return true;
	} else {
		return false;
	}
}

function checkFormUpdateUser() {
	check_nom(true);
	check_prenom(true);
	check_login('user', true);			
	check_email('user', true);
	
	if(fieldNom == 1 && fieldPrenom == 1 && fieldLogin == 1 && fieldEmail == 1) {
		if($('new_password').value != '' || $('new_password_confirmation').value != '') {
			check_old_password('user', true);
			check_password(true);
			check_confirmation(true);
			
			if(fieldOldPassword == 1 && fieldPassword == 1 && fieldConfirmation == 1) {
				return true;
			} else {
				return false;
			}
		}	else {
			return true;
		}
	} else {
		return false;
	}
}

/* --- Journaliste --- */

function initFormulaireJournaliste() {
	coteLogin = 'droite';
	cotePassword = 'droite';
	coteConfirmation = 'droite';
	
	initFormulaireObserver();
	
	Event.observe('login_register', 'blur', function() { check_login('journaliste', false); });
	
	Event.observe('type_1', 'click', function() { journaliste_displayType(1); });
	Event.observe('type_2', 'click', function() { journaliste_displayType(2); });
	Event.observe('type_3', 'click', function() { journaliste_displayType(2); });

	Event.observe('societe_journaliste_2', 'blur', check_societe_journaliste);
	Event.observe('societe_journaliste_3', 'blur', check_societe_journaliste);
	Event.observe('societe_journaliste_4', 'blur', check_societe_journaliste);
}

function initUpdateJournaliste() {
	coteLogin = 'droite';
	coteOldPassword = 'droite';
	cotePassword = 'droite';
	coteConfirmation = 'droite';
	
	initUpdateObserver();
	
	check_nom(true);
	check_prenom(true);
	check_login('journaliste', true);	
	check_email('journaliste', true);
	
	Event.observe('email', 'blur', function() { check_email('journaliste', false); });
	Event.observe('login', 'blur', function() { check_login('journaliste', false); });
	Event.observe('old_password', 'blur', function() { check_old_password('journaliste', false); });
}

function checkFormJournaliste() {
	check_nom(true);
	check_prenom(true);
	check_login('journaliste', true);
	check_password(true);
	check_confirmation(true);
	check_societe_journaliste(true);
	
	if(fieldNom == 1 && fieldPrenom == 1 && fieldSocieteJournaliste == 1 && fieldLogin == 1 && fieldPassword == 1 && fieldConfirmation == 1) {
		return true;
	} else {
		return false;
	}
}

function checkFormUpdateJournaliste() {
	check_nom(true);
	check_prenom(true);
	check_login('journaliste', true);			
	check_email('journaliste', true);
	
	if(fieldNom == 1 && fieldPrenom == 1 && fieldLogin == 1 && fieldEmail == 1) {
		if($('new_password').value != '' || $('new_password_confirmation').value != '') {
			check_old_password('journaliste', true);
			check_password(true);
			check_confirmation(true);
			
			if(fieldOldPassword == 1 && fieldPassword == 1 && fieldConfirmation == 1) {
				return true;
			} else {
				return false;
			}
		}	else {
			return true;
		}
	} else {
		return false;
	}
}

/* --- Société --- */

function initFormulaireSociete() {
	initFormulaireObserver();
	Event.observe('societe', 'blur', function() { check_societe(false); });
	Event.observe('email', 'blur', function() { check_email('societe_detail', false); });
	Event.observe('login_register', 'blur', function() { check_login('societe', false); });
}

function checkFormSociete() {
	check_nom(true);
	check_prenom(true);
	check_societe(true);
	check_email('societe_detail', true);
	check_login('societe', true);
	check_password(true);
	check_confirmation(true);

	if(fieldNom == 1 && fieldPrenom == 1 && fieldSociete == 1 && fieldEmail == 1 && fieldLogin == 1 && fieldPassword == 1 && fieldConfirmation == 1) {
		return true;
	} else {
		return false;
	}
}

function initUpdateSociete() {
	coteEmail = 'droite_societe';
	$('old_password').clear();

	check_nom_prenom(true);
	check_login('societe', true);	
	check_email('societe_detail', true);
	check_societe(true);
	
	Event.observe('nom', 'blur', function() { check_nom_prenom(false); });
	Event.observe('prenom', 'blur', function() { check_nom_prenom(false); });
	Event.observe('email', 'blur', function() { check_email('societe_detail', false); });
	Event.observe('login', 'blur', function() { check_login('societe', false); });
	Event.observe('old_password', 'blur', function() { check_old_password('societe', false); });
	Event.observe('new_password', 'blur', function() { check_password(false); });
	Event.observe('new_password_confirmation', 'blur', function() { check_confirmation(false); });
}

function checkFormUpdateSociete() {
	if($('delete_account') && $('delete_account').checked == true) {
		if(confirm('Confirmer-vous la suppression de votre compte et de tout ce qu\'il contient ?')) {
			return true;
		} else {
			return false;
		}
	}
	else if($('delete_account_admin') && $('delete_account_admin').checked == true) {
		if(confirm('Confirmer-vous la suppression de ce compte et de tout ce qu\'il contient ?')) {
			return true;
		} else {
			return false;
		}
	} else {
		check_nom_prenom(true);
		check_societe(true);
		check_email('societe_detail', true);
		check_login('societe', true);
	
		if(fieldNom == 1 && fieldPrenom == 1 && fieldSociete == 1 && fieldEmail == 1 && fieldLogin == 1) {
			if($('new_password').value != '' || $('new_password_confirmation').value != '') {
				check_old_password('societe', true);
				check_password(true);
				check_confirmation(true);
				
				if(fieldOldPassword == 1 && fieldPassword == 1 && fieldConfirmation == 1) {
					return true;
				} else {
					return false;
				}
			}	else {
				return true;
			}
		} else {
			return false;
		}
	}
}

/* --- Communiqués --- */

function initCommunique() {
	check_titre(false);
	check_auteur(false);	
	check_texte(false);
	
	Event.observe('titre', 'blur', function() { check_titre(false); });
	Event.observe('auteur', 'blur', function() { check_auteur(false); });
	Event.observe('texte', 'blur', function() { check_texte(false); });
}

function checkFormCommunique() {
	coteTitre = 'gauche_communique';
	coteAuteur = 'gauche_communique';
	coteTexte = 'gauche_communique';
	
	check_titre(true);
	check_auteur(true);
	check_texte(true);
	
	return (fieldTitre == 1 && fieldAuteur == 1 && fieldTexte == 1);
}

/* --- Nominations --- */

function initNomination() {
	check_nom_autre(false);	
	check_poste(false);
	check_texte(false);
	
	Event.observe('nom_autre', 'blur', function() { check_nom_autre(false); });
	Event.observe('poste_2', 'blur', function() { check_poste(false); });
	Event.observe('texte', 'blur', function() { check_texte(false); });
}

function checkFormNomination() {
	coteNomAutre = 'gauche_nomination';
	cotePoste = 'gauche_nomination';
	coteTexte = 'gauche_nomination';
	
	check_nom_autre(true);	
	check_poste(true);
	check_texte(true);

	if(fieldNomAutre == 1 && fieldPoste == 1 && fieldTexte == 1) {
		return true;
	} else {
		return false;
	}
}

/* --- Fonctions --- */

function check_nom(checkForm) {
	checkDiv('f_nom');
	if($('nom').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_nom', 'f_nom', 'Vous devez indiquer votre nom', coteNom);
			fieldNom = 0;
		}
	} else {
		fieldNom = 1;
	}
}

function check_prenom(checkForm) {
	checkDiv('f_prenom');
	if($('prenom').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_prenom', 'f_prenom', 'Vous devez indiquer votre prénom', cotePrenom);
			fieldPrenom = 0;
		}
	} else {
		fieldPrenom = 1;
	}
}

function check_nom_prenom(checkForm) {
	checkDiv('f_nom_prenom');
	var messageErreur = null;
	
	if($('prenom').value == '') {
		if(checkForm == true) {
			messageErreur += 'prenom';
			fieldPrenom = 0;
		}
	} else if($('nom').value == '') {
		if(checkForm == true) {
			messageErreur += 'nom';
			fieldNom = 0;
		}
	}
	
	if(messageErreur != null) {
		switch (messageErreur) {
			case 'prenom':
				displayErrorForm('check_nom_prenom', 'f_nom_prenom', 'Vous devez indiquer votre prénom', cotePrenom);
				break;
			case 'nom':
				displayErrorForm('check_nom_prenom', 'f_nom_prenom', 'Vous devez indiquer votre nom', coteNom);
				break;
			default:
				displayErrorForm('check_nom_prenom', 'f_nom_prenom', 'Vous devez indiquer vos nom et prénom', cotePrenom);
				break;
		}
	} else {
		fieldPrenom = 1;
		fieldNom = 1;
	}
}

function check_email(type, checkForm) {
	checkDiv('f_email');
	var email = $('email').value;
	
	if(type == 'user') {
		var id = $('id_user').value;
	} else if(type == 'journaliste') {
		var id = $('id_journaliste').value;
	} else {
		var id = $('id_societe').value;
	}

	if(email != '') {
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
					
		if(filter.test(email)) {
			new Ajax.Request(ROOT_PATH+'remote/register.php',
					{
						method : 'post',
						parameters : 'action=checkEmail&type='+type+'&email='+email+'&id='+id,
						onSuccess : function(xhr) {
							if(xhr.responseText == 'indisponible') {
								displayErrorForm('check_email', 'f_email', 'Cet adresse email n\'est pas disponible', coteEmail);
								fieldEmail = 0;
							} else {
								fieldEmail = 1;
							}
						}
					});
		} else {
			displayErrorForm('check_email', 'f_email', 'Le format de l\'adresse email est invalide', coteEmail);
			fieldEmail = 0;
		}
	} else {
		if(checkForm == true) {
			displayErrorForm('check_email', 'f_email', 'Vous devez indiquer votre email', coteEmail);
			fieldEmail = 0;
		}
	}
}

function check_societe(checkForm) {
	checkDiv('f_societe');
	if($('societe').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_societe', 'f_societe', 'Vous devez indiquer le nom de votre société', coteSociete);
			fieldSociete = 0;
		}
	} else {
		fieldSociete = 1;
	}
}

function check_societe_journaliste(checkForm) {
	checkDiv('f_societe_journaliste');
	
	if($('type_1').checked == true) {
		if($('societe_journaliste_2').value == '' && $('societe_journaliste_3').value == '' && $('societe_journaliste_4').value == '') {
			if(checkForm == true) {
				displayErrorForm('check_societe_journaliste', 'f_societe_journaliste', 'Vous devez indiquer un nom de société', coteSocieteJournaliste);
				fieldSocieteJournaliste = 0;
			}
		} else {
			fieldSocieteJournaliste = 1;
		}
	/*} else {
		if($('societe_journaliste_1').value == '') {
			if(checkForm == true) {
				displayErrorForm('check_societe_journaliste', 'f_societe_journaliste', 'Vous devez indiquer le nom de votre société', coteSocieteJournaliste);
				fieldSocieteJournaliste = 0;
			}
		} else {
			fieldSocieteJournaliste = 1;
		}*/
	}
}

function check_login(type, checkForm) {
	if($('login_register')) {
		var login = $('login_register').value;
	} else {
		var login = $('login').value;
	}
	
	if(type == 'user') {
		var id = $('id_user').value;
	} else if(type == 'journaliste') {
		var id = $('id_journaliste').value;
	} else {
		var id = $('id_societe').value;
	}
	
	checkDiv('f_login');
	if(login != '') {
		if(login.length < 3) {
			displayErrorForm('check_login', 'f_login', 'Votre login est trop court | 3 caractères min', coteOldPassword);
			fieldLogin = 0;
		} else {
		new Ajax.Request(ROOT_PATH+'remote/register.php',
				{
					method : 'post',
					parameters : 'action=checkLogin&type='+type+'&login='+login+'&id='+id,
					onSuccess : function(xhr) {
						if(xhr.responseText == 'indisponible') {
							displayErrorForm('check_login', 'f_login', 'Ce login n\'est pas disponible', coteLogin);
							fieldLogin = 0;
						} else {
							fieldLogin = 1;
						}
					}
				});
		}
	} else {
		if(checkForm == true) {
			displayErrorForm('check_login', 'f_login', 'Vous devez indiquer votre login', coteLogin);
			fieldLogin = 0;
		}
	}
}

function check_old_password(type, checkForm) {
	checkDiv('f_olf_password');
	var old_password = $('old_password').value;
	
	if(type == 'user') {
		var url = ROOT_PATH_USER+'remote/user.php';
	} else if(type == 'journaliste') {
		var url = ROOT_PATH_JOURNALISTE+'remote/journaliste.php';
	} else {
		var url = ROOT_PATH_SOCIETE+'remote/societe.php';
	}
	
	if(old_password != '') {
		if(old_password.length < 6) {
			displayErrorForm('check_old_password', 'f_olf_password', 'Mot de passe trop court | 6 caractères min', coteOldPassword);
			fieldOldPassword = 0;
		} else {
			new Ajax.Request(url,
					{
						method : 'post',
						parameters : 'action=checkPassword&password='+old_password+'&id_'+type+'='+$('id_'+type).value,
						onSuccess : function(xhr) {
							if(xhr.responseText == 'ok') {
								fieldOldPassword = 1;
							} else {
								displayErrorForm('check_old_password', 'f_olf_password', 'Mot de passe est incorrect', coteOldPassword);
								fieldOldPassword = 0;
							}
						}
					});
		}
	} else {
		if($('new_password').value != '' || $('new_password_confirmation').value != '') {
			if(checkForm == true) {
				displayErrorForm('check_old_password', 'f_olf_password', 'Vous devez indiquer votre mot de passe actuel', coteOldPassword);
				fieldOldPassword = 0;
			}
		}
	}
}

function check_password(checkForm) {
	if($('password_register')) {
		var password = $('password_register');
	} else {
		var password = $('new_password');
	}
	
	checkDiv('f_password');
	if(password.value != '') {
		if(password.value.length < 6) {
			displayErrorForm('check_password', 'f_password', 'Votre mot de passe est trop court', cotePassword);
			fieldPassword = 0;
		} else {
			fieldPassword = 1;
		}
	} else {
		if(checkForm == true) {
			displayErrorForm('check_password', 'f_password', 'Vous devez choisir un mot de passse', cotePassword);
			fieldPassword = 0;
		}
	}
}

function check_confirmation(checkForm) {
	if($('confirmation_register')) {
		var confirmation = $('confirmation_register');
	} else {
		var confirmation = $('new_password_confirmation');
	}
	
	if($('password_register')) {
		var password = $('password_register');
	} else {
		var password = $('new_password');
	}

	checkDiv('f_confirmation');
	if(confirmation.value != '') {
		if(password.value != confirmation.value) {
			displayErrorForm('check_confirmation', 'f_confirmation', 'Les mot de passe ne sont pas identiques', coteConfirmation);
			fieldConfirmation = 0;
		} else {
			fieldConfirmation = 1;
		}
	} else {
		if(checkForm == true) {
			displayErrorForm('check_confirmation', 'f_confirmation', 'Vous devez confirmer votre mot de passe', coteConfirmation);
			fieldConfirmation = 0;
		}
	}
}

function check_titre(checkForm) {
	checkDiv('f_titre');
	if($('titre').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_titre', 'f_titre', 'Vous devez indiquer un titre', coteTitre);
			fieldTitre = 0;
		}
	} else {
		fieldTitre = 1;
	}
}

function check_auteur(checkForm) {
	checkDiv('f_auteur');
	if($('auteur').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_auteur', 'f_auteur', 'Vous devez indiquer un auteur', coteAuteur);
			fieldAuteur = 0;
		}
	} else {
		fieldAuteur = 1;
	}
}

function check_texte(checkForm) {
	checkDiv('f_texte');
	
	var textValue = '';
	
	if (!!tinyMCE && !!tinyMCE.activeEditor) {
		textValue = tinyMCE.activeEditor.getContent();
		
	} else {
		textValue = $('texte').value;
	}
	
	if(textValue == '') {
		if(checkForm == true) {
			displayErrorForm('check_texte', 'f_texte', 'Vous devez indiquer un texte', coteTexte);
			fieldTexte = 0;
		}
	} else {
		fieldTexte = 1;
	}
}

function check_nom_autre(checkForm) {
	checkDiv('f_nom_autre');
	if($('nom_autre').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_nom_autre', 'f_nom_autre', 'Vous devez indiquer un nom', coteTexte);
			fieldNomAutre = 0;
		}
	} else {
		fieldNomAutre = 1;
	}
}

function check_poste(checkForm) {
	checkDiv('f_poste');
	if($('poste_2').value == '') {
		if(checkForm == true) {
			displayErrorForm('check_poste', 'f_poste', 'Vous devez indiquer un poste', coteTexte);
			fieldPoste = 0;
		}
	} else {
		fieldPoste = 1;
	}
}

function checkDiv(div) {
	if($(div)) { 
		Element.remove(div);
	}
}

function displayErrorForm(container, divId, message, css) {	
	checkDiv(divId);

	var div = new Element('span', { 'class' : 'error', id : divId}).update(message);
	
	//var img = new Element('img', { src : IMG_ROOT_PATH+'picto_erreur.gif' });
	
	//var span = new Element('span').update(message);
	
	//div.insert(img);
	//div.insert(span);
	$(container).insert(div);
	
	Element.hide($(divId));
	Effect.BlindDown($(divId), {duration : 0.3});
}

/* --- Journaliste ---*/

var init = 0;

function journaliste_displayType(element){
	checkDiv('f_societe_journaliste');
	
	switch (element) {
		
		case 1 :
		
			Element.show($('liste_2'));
			break;
			
		case 2 :
		
			Element.hide($('liste_2'));
			break;
	}
}
