// JavaScript Document
// *************************************************************************
// * Variables et fonction de base pour vérifier le contenu des champs ou
// * le fait qu'ils soient renseignés
// *************************************************************************
// Expressions régulières de vérification des champs du formulaire
var regExpEmpty        = /^$/g;
var regExpYear         = /^[0-9]+$/g;
var regExpName         = /^[a-zA-Z -]+$/g;
var regExpPassword     = /^[a-zA-Z0-9]+$/g;
var regExpPhone        = /^(\(\+[1-9][0-9]?[0-9]?\))?[ ]?[0-9() .-]*$/g;
var regExpPhoneIntl    = /^[0-9 -.\(\)]+$/g;
var regExpEmailAddress = /^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/g; 
var regExpAutTitle     = /^[a-zA-Z0-9aàâäeéèêëiîïoôöuùûücçAÀÂÄEÉÈÊËIÎÏOÔÖUÙÛÜCÇ \.\:\,\-\']*$/g;
var regExpDateJMA      = /^((((0?[1-9]|[12]\d|3[01])[\-](0?[13578]|1[02])[\-]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\-](0?[13456789]|1[012])[\-]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\-]0?2[\-]((1[6-9]|[2-9]\d)?\d{2}))|(29[\-]0?2[\-]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/g;

// Les deux fonction suivantes servent à identifier si une chaine de caractère est 
// compatible ou non avec une expression régulière passée en paramètre
function matchRegExp( argData, argRE) {
  var result = argData.match( argRE);
  if (result != null && result.length == 1) {
    return true;
  } else {
    return false;
  }
}
function notMatchRegExp( argData, argRE) {
  if (matchRegExp( argData, argRE)) {
	  return false;
  } else {
	  return true;
  }
}

// Vérification spécifique de chaque type de champ
function isEmpty( argVal) {
  return matchRegExp( argVal, regExpEmpty);
}
function isNotPwd( argVal) {
	return notMatchRegExp( argVal, regExpPassword);
}
function isNotName( argVal) {
	return notMatchRegExp( argVal, regExpName);
}
function isNotYear( argVal) {
	return notMatchRegExp( argVal, regExpYear);
}
function isNotAutTitle( argVal) {
	return notMatchRegExp( argVal, regExpAutTitle);
}
function isNotEmail( argVal) {
  return notMatchRegExp( argVal, regExpEmailAddress);
}
function isNotPhone( argVal) {
  return notMatchRegExp( argVal, regExpPhone);
}
function isNotPhoneIntl( argVal) {
  return notMatchRegExp( argVal, regExpPhoneIntl);
}
function isNotDateJMA( argVal) {
  return notMatchRegExp( argVal, regExpDateJMA);
}

// *************************************************************************
// * Fonctions pour vérifier le contenu des champs des formulaires
// *************************************************************************
function AjaxCheckField(fileName) {
	if (window.XMLHttpRequest) {// FIREFOX
		xhr_object = new XMLHttpRequest();
	} else {
		if (window.ActiveXObject) { // IE
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			return(false);
		}
	}
	xhr_object.open("GET", fileName, false);
	xhr_object.send(null);
	if (xhr_object.readyState == 4) {
		return(xhr_object.responseText);
	} else {
		return(-1);
	}
}
function writeMessage( messageCode, obj) {
	document.getElementById(obj).style.display = "block";
	document.getElementById(obj).innerHTML = errorMessage[messageCode];
}
function checkAvailability( curObj) {
	if (curObj != "") {
		if(isNotPwd( curObj)) {
			writeMessage("617", 'errorMessage');
		  return false;
		}
		result = AjaxCheckField('/_ajax/checkLogin.php?login='+escape(curObj));
		switch (result) {
			case -1 :
			  writeMessage("200", 'errorMessage');
			 return false;
			case "0" :
				document.getElementById('errorMessage').innerHTML = "&nbsp;";
				return true;
			default :
				writeMessage("616", 'errorMessage');
				document.getElementById('errorMessage').innerHTML += " <strong>(" + curObj + ")</strong>";
				return false;
		}
	}
}
function checkAvailabilityMaj( curObj) {
	if ((curObj != "") && (document.getElementById('loginRef').value != curObj)) {
		if (isNotPwd( curObj)) {
			writeMessage("617", 'errorMessage');
		  return false;
		}
		result = AjaxCheckField('/_ajax/checkLogin.php?login='+escape(curObj));
		if (result == "pris") {
			writeMessage("616", 'errorMessage');
			document.getElementById('errorMessage').innerHTML += " <strong>(" + curObj + ")</strong>";
			return false;
		} else {
		  document.getElementById('errorMessage').innerHTML = "&nbsp;";
		  return true;
		}
	}
	document.getElementById('errorMessage').innerHTML = "&nbsp;";
	return true;
}
function checkLogin( curObj, typeForm) {
	if (curObj.length < 8) {
		writeMessage("617", 'errorMessage');
		return false;
	} 
	if (typeForm == "profil") {
		if (!checkAvailabilityMaj( curObj)) { return false;} 		
	} else {
		if (!checkAvailability( curObj)) { return false;} 		
	}
	return true;
}
function checkMember( argFrm) {
	if (isEmpty( argFrm.elements['loginFld'].value) || isEmpty( argFrm.elements['nameFld'].value) ||
			isEmpty( argFrm.elements['fnameFld'].value) || isEmpty( argFrm.elements['emlFld'].value) || 
			isEmpty( argFrm.elements['telFld'].value)   || isEmpty( argFrm.elements['expFld'].value) ||
			isEmpty( argFrm.elements['motFld'].value)) {
		writeMessage("610", 'errorMessage');
		return false;
	}
	if (isNotEmail( argFrm.elements['emlFld'].value)) {
		writeMessage("612", 'errorMessage');
		return false;
  }
	if (isNotPhoneIntl( argFrm.elements['telFld'].value)) {
		writeMessage("613", 'errorMessage');
		return false;
	}
	if (!checkLogin( argFrm.elements['loginFld'].value, "member")) {
		return false;
	}
	return true;
}
// *************************************************************************
// * Formulaire Mon profil
// *************************************************************************
function checkProfil( argFrm) {
	if (isEmpty( argFrm.elements['loginFld'].value) || isEmpty( argFrm.elements['nameFld'].value) ||
			isEmpty( argFrm.elements['fnameFld'].value) || isEmpty( argFrm.elements['emlFld'].value) || 
			isEmpty( argFrm.elements['telFld'].value)) {
		writeMessage("610", 'errorMessage');
		return false;
	}
	if (!checkLogin( argFrm.elements['loginFld'].value, "profil")) {
		return false;
	}
	if (document.getElementById("pwdEditCheck").checked) {
		if (isEmpty( argFrm.elements['pwd1Fld'].value) || isEmpty( argFrm.elements['pwd2Fld'].value)) {
		  writeMessage("610", 'errorMessage');
		  return false;
		}
		if (argFrm.elements['pwd1Fld'].value != argFrm.elements['pwd2Fld'].value) {
			writeMessage("607", 'errorMessage');
			return false;
		}
		if ((isNotPwd( argFrm.elements['pwd1Fld'].value)) || (argFrm.elements['pwd1Fld'].value.length < 8)) {
		  writeMessage("614", 'errorMessage');
		  return false;
		}
	}
	if (isNotEmail( argFrm.elements['emlFld'].value)) {
		writeMessage("612", 'errorMessage');
		return false;
  }
	if (isNotPhoneIntl( argFrm.elements['telFld'].value)) {
		writeMessage("613", 'errorMessage');
		return false;
	}
	return true;
}
// *************************************************************************
// * Formulaire Contact
// *************************************************************************
function checkContact( argFrm) {
	if ((argFrm.elements['nameFld'].value == "") || (argFrm.elements['emailFld'].value == "") || (argFrm.elements['messageFld'].value == "")) {
		writeMessage("610", 'errorMessage2');
		return false;
	}
	if (isNotEmail( argFrm.elements['emailFld'].value)) {
		writeMessage("612", 'errorMessage2');
		return false;
  }
	return true;
}

// *************************************************************************
// * Formulaire de recherche des publications
// *************************************************************************
function checkPubSearch( argFrm) {
	if ((isNotAutTitle( argFrm.elements['autFld'].value)) || (isNotAutTitle(argFrm.elements['titleFld'].value))) {
		writeMessage("618", 'errorMessage2');
		return false;
	}
	if (((argFrm.elements['an1Fld'].value != "AAAA") && (argFrm.elements['an1Fld'].value != "YYYY") && (isNotYear( argFrm.elements['an1Fld'].value)) && (!isEmpty(argFrm.elements['an1Fld'].value))) || 
			((argFrm.elements['an2Fld'].value != "AAAA") && (argFrm.elements['an2Fld'].value != "YYYY") && (isNotYear( argFrm.elements['an2Fld'].value)) && (!isEmpty(argFrm.elements['an2Fld'].value)))) {
		writeMessage("619", 'errorMessage2');
		return false;
	}
	return true;
}

// *************************************************************************
// * Formulaire d'abonnement à la Quazette
// *************************************************************************
function checkAbo( argFrm) {
	if ((argFrm.elements['email'].value == "") || (argFrm.elements['Nom'].value == "")) {
		writeMessage("610", 'errorMessage');
		return false;
	}
	if (isNotEmail( argFrm.elements['email'].value)) {
		writeMessage("612", 'errorMessage');
		return false;
  }
	return true;
}

// *************************************************************************
// * Formulaire de désabonnement à la Quazette
// *************************************************************************
function checkDesAbo( argFrm) {
	if (isNotEmail( argFrm.elements['email'].value)) {
		writeMessage("612", 'errorMessage');
		return false;
  }
	return true;
}

// *************************************************************************
// * Visualisation de la modification du mot de passe (Mon profil)
// *************************************************************************
function showHidePwd( objId, blocPwdId) {
  if (document.getElementById(objId).checked) {
		document.getElementById(objId).checked = true;
    document.getElementById('errorMessage').innerHTML = "&nbsp;";
    document.getElementById(blocPwdId).style.display = 'block';
	} else {
		document.getElementById(objId).checked = false;
    document.getElementById('errorMessage').innerHTML = "&nbsp;";
		document.getElementById(blocPwdId).style.display = 'none';
	}
}
