function required(form, c)
{
//	alert ("required(" + c + ")");
	return form.elements[c].value.match(/.{1,}/);
}

function telephone(form, c)
{
//	alert ("telephone(" + c + ")");
	return (form.elements[(c + "1")].value + 
			form.elements[(c + "2")].value + 
			form.elements[(c + "3")].value).match (/[0-9]{10}/);
}

function professionnels(form, nom, tel, str)
{
	var res = new String();
	if(required(form, nom) || required(form, tel+"1") || required(form, tel+"2") || required(form, tel+"3"))	
	{
		var message = new String();
		if(!required(form, nom))
		{
			message += "\t\tNom de la firme\n";
		}
		if(!telephone(form, tel))
		{
			message += "\t\tTéléphone\n";
		}
		if(message.length)
		{
			res += "\t" + str + "\n" + message;
		}
	}
	return (res);
}

function courriel(form, c)
{
//	alert ("courriel(" + c + ")");
	return form.elements[c].value.match(/^\S+@\S+\.\S{2,4}$/);
}

function validateDate(dateString) {
	var isValid;
	var format;

	isValid = true;
	format = /^\d{4}-\d{2}-\d{2}$/;

	if(!format.test(dateString)) {
		isValid = false;
	} else {
		var year, month, day;
		var date;

		year = dateString.split("-")[0];
		month = dateString.split("-")[1];
		day = dateString.split("-")[2];

		date = new Date(year, month - 1, day);

		if(((date.getMonth() + 1) != month) || (date.getDate() != day) || (date.getFullYear() != year)) {
			isValid = false;
		} // if
	} // else

	return isValid
} // validateDate

function chkHeure(form, c)
{
	var d = new Date();
	var hh = form.elements[(c + "HH")].value;
	var mm = form.elements[(c + "MM")].value;

	d.setHours(hh);
	d.setMinutes(mm);

	return (d.getHours() == hh && d.getMinutes() == mm);
}

function validate(form) {
	var isValid, exists, result, message;
	var radio;

	isValid = true;
	result = new String();
	message = new String();

	// Section 1
	if(!required(form, "s1Desc")) {
		message += "\tDescription du projet\n";
	} // if

	for(i = 0, exists = false; !exists && i < form.s1Type.length; i++) {
		exists |= form.s1Type[i].checked;
	} // for

	if(!exists) {
		message += "\tType de projet\n";
	} // if

	if(message.length) {
		result += "1. Description et numéro de projet du maître de l'ouvrage :\n" + message + "\n";
		message = "";
	} // if

	// Section 2
	if(!required(form, "s2Lieu")) {
		result += "2. Lieu des travaux\n\n";
	} // if
	
	// Section 3
	if(!required(form, "s3Entreprise")) {
		message += "\tNom de l'entreprise\n";
	} // if
	
	if(!required (form, "s3Nom")) {
		message += "\tNom de la personne-ressource\n";
	} // if
	
	if(!telephone(form, "s3Tel")) {
		message += "\tTéléphone\n";
	} // if

	if(message.length) {
		result += "3. Maître de l'ouvrage :\n" + message + "\n";
		message = "";
	} // if
	
	// Section 4
	for(i = 0, exists = false; !exists && i < form.s4Type.length; i++) {
		exists |= form.s4Type[i].checked;
	} // for

	if(!exists) {
		message += "\tMaître d'ouvrage / professionel\n";
	} else {
		radio = form.elements["s4Type"];

		for(i = 0; i < radio.length; i++) {
			if(radio[i].checked && (radio[i].value == "GerantProjet" || radio[i].value == "Gestionnaire")) {
				message = "";

				if(!required (form, "s4Nom")) {
					message += "\tNom\n";
				} // if

				if(!telephone (form, "s4Tel")) {
					message += "\tTéléphone\n";
				} // if
			} // if
		} // for
	} // else

	if(message.length) {
		result += "4. À qui soumissionnez-vous ?\n" + message + "\n";
		message = "";
	} // if

	// Section 5
	message += professionnels(form, "s5ElecNom", "s5ElecTel", "Ingénieur électrique");
	message += professionnels(form, "s5MecNom", "s5MecTel", "Ingénieur mécanique");
	message += professionnels(form, "s5ArchNom", "s5ArchTel", "Architecte");
  
//	if(!message.length && !required(form, "s5ElecNom") && !required(form, "s5MecNom")  && !required(form, "s5ArchNom")) {
//		message += "\tAu moins un professionnel doit être spécifié\n";
//	} // if
	
	// Section 5 - (en lien avec section 4)
	radio = form.elements["s4Type"];
	for(i = 0; i < radio.length; i++) {
		if(radio[i].checked && radio[i].value == "Ingenieur" && !required(form, "s5ElecNom") && !required(form, "s5MecNom")) {
			message = "\tVous devez inscrire au moin un ingénieur car c'est le destinataire des soumissions que vous avez choisi.\n";
		} else if(radio[i].checked && radio[i].value == "Architecte" && !required(form, "s5ArchNom")) {
			message = "\tVous devez inscrire le nom de l'architecte car c'est le destinataire des soumissions que vous avez choisi.\n";
		} // else if
	} // for

	if(message.length) {
		result += "5. Professionnels impliqués dans le projet :\n" + message + "\n";
		message = "";
	} // if

	// Section 6
	if(!validateDate(form.s6Date.value)) {
		message += "\tDate\n";
	} // if

	if(!chkHeure(form, "s6Heure")) {
		message += "\tHeure\n";
	} // if

	if(message.length) {
		result += "6. Date et heure de fermeture du projet chez le maître de l'ouvrage ou son représentant :\n" + message + "\n";
	} // if
	
	message = "";

	if(!required(form, "s7Nom")) {
		message += "\tNom du requérant de la présente demande\n";
	} // if

	if(!required(form, "s7Entreprise")) {
		message += "\tNom de l'entreprise\n";
	} // if

	if(!required(form, "s7Specialite")) {
		message += "\tSpécialité\n";
	} // if

	if(!telephone(form, "s7Tel")) {
		message += "\tTéléphone\n";
	} // if

	if(!courriel(form, "s7Courriel")) {
		message += "\tCourriel\n";
	} // if

	if(message.length) {
		result += "7. Requérant :\n" + message + "\n";
	} // if
	
	if(result.length) {
		alert("Les champs suivants sont vides ou erronés :\n\n" + result);
		isValid = false;
	} // if

	return isValid;
} // validate

