/* validations diverses */

function getLabelForId(id) {
    var label, labels = document.getElementsByTagName('label');
    for (var i = 0; (label = labels[i]); i++) {
        if (label.htmlFor == id) {
            return label;
        }
    }
    return false;
}
function checkNoMembre() {
/*
    if(noMembreInvalidUntilNextPost) {
        var label = getLabelForId('noMembre');
		label.className = 'problem';
        createErrorMsg(noMembre, 'Votre numéro de membre est manquant ou invalide.');
    }
    else {
*/    
        var noMembre = document.getElementById('noMembre');
        var label = getLabelForId('noMembre');
        var digits = noMembre.value.replace(/-/ig, '').replace(/[^0-9]/ig, '');
        if (document.getElementById(noMembre.id + 'Error')) 
           { noMembre.parentNode.removeChild(document.getElementById(noMembre.id + 'Error')); }
        if (digits.length == 7) {
           noMembre.value = digits.substring(0,6) + '-' + digits.substring(6);
           label.className = 'completed';
        } else {
           label.className = 'problem';
           createErrorMsg(noMembre, INSC_ERRORS['noMembre']);
        }
/*
    }
*/
}

function checkEmail() {
    var email = document.getElementById('courriel');
    var label = getLabelForId('courriel');
	if (document.getElementById(email.id + 'Error')) 
		{ email.parentNode.removeChild(document.getElementById(email.id + 'Error')); }
    if (email.value.match(/^[a-z0-9-_]+[a-z0-9-_\.]+@[a-z0-9-_]+(\.[a-z0-9-_]+)+$/ig)) {
        label.className = 'completed';
    } else {
        label.className = 'problem'; 
        createErrorMsg(email,INSC_ERRORS['email']);
    }
}
function checkMotDePasse() {
    var motDePasse = document.getElementById('motDePasse');
    var label = getLabelForId('motDePasse');
	if (document.getElementById(motDePasse.id + 'Error')) 
		{ motDePasse.parentNode.removeChild(document.getElementById(motDePasse.id + 'Error')); }
    if (motDePasse.value.length == 0 ) {
			label.className = 'problem'; 
			createErrorMsg(motDePasse,INSC_ERRORS['motDePasseManquant']);
    } else {
		if (motDePasse.value.match(/[0-9]/ig)
			&& motDePasse.value.match(/[a-z_-]/ig)
			&& !motDePasse.value.match(/[ ]/ig)
			&& (motDePasse.value.length >= 6)
			&& (motDePasse.value.length <= 20)) {
			label.className = 'completed';
		} else {
			label.className = 'problem'; 
			createErrorMsg(motDePasse,INSC_ERRORS['motDePasseInvalide']);
		}
	}
}
function checkMotDePasse2() {
    var motDePasse2 = document.getElementById('motDePasse2');
    var label = getLabelForId('motDePasse2');
	if (document.getElementById(motDePasse2.id + 'Error')) 
		{ motDePasse2.parentNode.removeChild(document.getElementById(motDePasse2.id + 'Error')); }
	if (motDePasse2.value == document.getElementById('motDePasse').value) {
        label.className = 'completed';
    } else {
        label.className = 'problem';
		createErrorMsg(motDePasse2,INSC_ERRORS['motDePasseConfirm']);
    }
}
function createErrorMsg(el, msg) {
	var errorId = el.id + 'Error';
	if (!document.getElementById(errorId)) {
/*  this is the kosher manner.... but MSIE buggers up.
		var error = el.parentNode.appendChild(document.createElement('SPAN'));
		error.setAttribute('id', errorId);
		error.setAttribute('class', 'fieldErrorMsg');
		error.appendChild(document.createTextNode(msg));
*/
		var error = document.createElement('p');
		error.innerHTML = '<span id="' + errorId + '" class="fieldErrorMsg">' + msg + '</span>';
		el.parentNode.appendChild(error.firstChild);
	}
}

function checkLangues() {
	var fieldset = document.getElementById('langues');
	var legend = fieldset.getElementsByTagName('LEGEND')[0];
	var langSel = false;
	var langues = fieldset.getElementsByTagName('SELECT');
	if (document.getElementById('languesError')) 
		{ fieldset.removeChild(document.getElementById('languesError')); }
	for (var l = 0; l < langues.length; l+=2) {
		if (langues[l].className != 'addOtherLang') {
			if ((langues[l].value > 0) && (langues[l+1].value > 0)) {
					langSel = true;
					break;
			}
		}
	}
	if (langSel) { 
		legend.className = 'completed';
	} else {
		legend.className = 'problem';
/*		
		var error = fieldset.insertBefore(document.createElement('SPAN'), legend.nextSibling);
		error.setAttribute('id', 'languesError');
		error.setAttribute('class', 'fieldErrorMsg');
		error.appendChild(document.createTextNode("Veuillez indiquer votre maîtrise d'au moins une (1) langue, tant à l'écrit qu'à l'oral."));
*/	
		var error = document.createElement('p');
		error.innerHTML = '<span id="' + id + 'Error" class="fieldErrorMsg">' +
                           INSC_ERRORS['langue'] + '</span>';
		fieldset.insertBefore(error.firstChild, legend.nextSibling);

	}
}

function checkRequiredFieldset(id, msg) {
	var fieldset = document.getElementById(id);
	var inputs = fieldset.getElementsByTagName('INPUT');
	var legend = fieldset.getElementsByTagName('LEGEND')[0];
	var oneItem = false;
	if (document.getElementById(id + 'Error')) 
		{ fieldset.removeChild(document.getElementById(id + 'Error')); }
	for (var i=0; i < inputs.length; i++) {
		if (inputs[i].value != "" && inputs[i].className != 'ignore') {
			if (  inputs[i].type == 'text' ||
			    ((inputs[i].type == 'checkbox' || inputs[i].type == 'radio') && inputs[i].checked)) {
				oneItem = true;
				break;
			}
		}
	}
	if (oneItem) {
		legend.className = 'completed';
	} else {
		legend.className = 'problem';
/*		var error = fieldset.insertBefore(document.createElement('SPAN'), legend.nextSibling);
		error.setAttribute('id', id + 'Error');
		error.setAttribute('class', 'fieldErrorMsg');
		error.appendChild(document.createTextNode("Veuillez indiquer au moins un (1) niveau de formation juridique."));
*/		
        errorId = id + 'Error';
        if(!document.getElementById(errorId)) {
    		var error = document.createElement('p');
            if(!msg) {
               if(id == 'champsPratique') {
                  msg = INSC_ERRORS['champPratiqueExp']; 
               }
               else if(id == 'champsPratiqueRech') {
                  msg = INSC_ERRORS['champPratiqueRech'];
               }
               else if(id == 'formationJuridique') {
                  msg = INSC_ERRORS['formationJuridique'];
               }
            }
            error.innerHTML = '<span id="' + errorId + '" class="fieldErrorMsg">' + msg + '</span>';
    		fieldset.insertBefore(error.firstChild, legend.nextSibling);
        }
	}
}
function checkPhone(id,required) {
	var phone = document.getElementById(id);
	var label = getLabelForId(id);
    if((!required) && (phone.value == '')) {
       	label.className = 'completed';
    } else {
        if (document.getElementById(id + 'Error')) 
        	{ phone.parentNode.removeChild(document.getElementById(id + 'Error')); }
         	var digits = phone.value.replace(/[^0-9]/ig, '');
        if (digits) {
        	label.className = 'completed';
        	if (digits.length == 10) {
        		phone.value = '(' + digits.substring(0, 3) + ') ' +  
        		digits.substring(3, 6) + '-' +  
        		digits.substring(6, 10);
        	}
        } else {
        	label.className = 'problem';
        	createErrorMsg(phone, INSC_ERRORS['telephone']);
        }
    }
}

function checkRequiredField(id) { // generic error msge
	var field = document.getElementById(id);
	var label = getLabelForId(id);
	if (document.getElementById(id + 'Error')) 
		{ field.parentNode.removeChild(document.getElementById(id + 'Error')); }
	if (field.value.match(/[^ ]+/ig)) {
		label.className = 'completed';
	} else {
		label.className = 'problem';
		createErrorMsg(field, INSC_ERRORS['remplirCeChamp']);
	}
}

var noCV = "Veuillez télécharger votre Curriculum Vitæ!";

var noCurrentCV = false;

function checkNoCV() {
  if(noCurrentCV) {
    /*
    // CV EST OBLIGATOIRE MAINTENANT
    return confirm("NOTE:\n\n" +
                   "Vous n'avez pas transmis de fichier CV à être associé à votre dossier.\n\n" +
                   "Pour joindre un Curriculum Vitæ à votre dossier, vous devez sélectionner le fichier CV\n" +
                   "sur votre ordinateur et appuyer sur \"Envoyer\".\n\n" +
                   "Appuyez sur \"Ok\" pour continuer à l'étape suivante SANS joindre de\n" +
                   "fichier CV à votre dossier.\n\n" +
                   "Appuyez sur \"Annuler\" si vous désirez transmettre un fichier CV, et\n" +
                   "n'oubliez pas d'appuyer sur \"Envoyer\" après avoir sélectionné le fichier\n" +
                   "sur votre ordinateur.");
    */
  }
  else return true;
}


/*  Scripts d'interface */

/*	/ * from PPK's quirksmode! * /
	var bugRiddenCrashPronePieceOfJunk = (
		navigator.userAgent.indexOf('MSIE 5') != -1
		&&
		navigator.userAgent.indexOf('Mac') != -1
	);*/

  function removeLang(aCode, indx, lang) {
//	if (!bugRiddenCrashPronePieceOfJunk) {	
		var toastRow = document.getElementById('lang' + aCode);
		toastRow.parentNode.removeChild(toastRow);
		// remettre la valeur dans le select
		var dropDown = document.getElementById('langAddCode');
		var opt = document.createElement('OPTION');
		opt.setAttribute('value', aCode);
		opt.appendChild(document.createTextNode(lang));
		dropDown.insertBefore(opt, dropDown.options[indx]);
		
		checkLangues();
/*	} else {
    document.forms['inscForm'].elements['delLangId'].value = aCode;
    document.forms['inscForm'].submit();
    }*/
  }
  
  function setLangueMaternelle(el) {
    var aCode = el.value;
    elemList = el.form.elements;
    var idParle = 'LANG_P_' + aCode;
    var idEcrit = 'LANG_E_' + aCode;
    for(var i=0;i<elemList.length;i++) {
      elem = elemList[i];
      if( (elem.id == idParle) || (elem.id == idEcrit) ) {
        elem.selectedIndex = 3;
      }
    }
    checkLangues();
  }
function newLang() {
//	if (!bugRiddenCrashPronePieceOfJunk) { // si c'est MSIE 5 Mac, on hâchereffe chez tes lusses
		var lang      = document.getElementById('langAddCode');
		var niveauP   = document.getElementById('langAdd_P');
		var niveauE   = document.getElementById('langAdd_E');
		
		var langTabl  = document.getElementById('langTable');

		// ici on fait une copie des niveaux indiqués dans la nouvelle langue	
		var cloneSelP = niveauP.cloneNode(true);
		cloneSelP.removeAttribute('id');
		cloneSelP.setAttribute('id', 'LANG_P_' + lang.value);
		cloneSelP.removeAttribute('name');
		cloneSelP.setAttribute('name', 'LANG_P_' + lang.value);
		cloneSelP.setAttribute('onchange', 'handleSelectChange(this)');
		cloneSelP.options[niveauP.selectedIndex].selected = true;
		var cloneSelE = niveauE.cloneNode(true);
		cloneSelE.removeAttribute('id');
		cloneSelE.setAttribute('id', 'LANG_E_' + lang.value);
		cloneSelE.removeAttribute('name');
		cloneSelE.setAttribute('name', 'LANG_E_' + lang.value);
		cloneSelE.setAttribute('onchange', 'handleSelectChange(this)');
		cloneSelE.options[niveauE.selectedIndex].selected = true;
		
		var newRow = document.createElement('TR');
		newRow.setAttribute('id', 'lang' + lang.value);
		
		newRow = document.getElementById('hrLang').parentNode.insertBefore(newRow, document.getElementById('hrLang'));
	
		var cloneTH = newRow.appendChild(document.createElement('TH'));
		cloneTH.appendChild(document.createTextNode(lang.options[lang.selectedIndex].text + ' :'));
		
		var radioMat = document.createElement('INPUT');
		radioMat.setAttribute('type', 'radio');
		radioMat.setAttribute('id', 'langueMaternelle' + lang.options[lang.selectedIndex].text);
		radioMat.setAttribute('name', 'langueMaternelle');
		radioMat.setAttribute('value', lang.value);
		radioMat.setAttribute('onclick', 'setLangueMaternelle(this)');

		// le lien pour supprimer la nouvelle langue ajoutée
		var supprimer = document.createElement('A');
		var supText = document.createTextNode(INSC_STRINGS['deleteLangLink']);
		supprimer.href = 'javascript:removeLang("' + lang.value + '", ' + lang.selectedIndex + ', "' + lang.options[lang.selectedIndex].text + '")';
		supprimer.appendChild(supText);
		
		// on insère les autres cellules
		newRow.insertCell(-1).appendChild(cloneSelP);
		newRow.insertCell(-1).appendChild(cloneSelE);
        
		var tdMat = newRow.insertCell(-1);
        tdMat.appendChild(radioMat);
        tdMat.className = 'langMat';
        
		newRow.insertCell(-1).appendChild(supprimer);
		
		// on enlève la langue maintenant ajoutée de la liste proposée
		lang.removeChild(lang.options[lang.selectedIndex]);
		
		//finalement on cache
		showRow('hidden', 'langues');
		
		return false;
/*	} else {
		showRow('hidden');
		document.getElementById('inscForm').submit();
	}*/
}
function showRow(visual, catRow) {
	if (catRow == 'langues') {
		if (document.getElementById('otherLang').selected) {
			var langs = document.getElementById('langAddCode').getElementsByTagName('OPTION');
			for(var o in langs) {
				if(langs[o].tagName == 'OPTION') langs[o].style.display = 'block';
			}
			document.getElementById('otherLang').disabled = true;
			return false;
		}
		document.getElementById('langAdd_E').style.visibility = visual;
		document.getElementById('langAdd_P').style.visibility = visual;
		document.getElementById('addLang').style.visibility   = visual;
	} else {
		document.getElementById('addFormationAutreNiveau').style.visibility = visual;
		document.getElementById('addFormationAutre').style.visibility = visual;
	}
}

/* inscription 2 */

function removeOther(aCode, indx, dom) {
	var toastRow = document.getElementById('dom' + aCode);
	toastRow.parentNode.removeChild(toastRow);
	// remettre la valeur dans le select
	if (indx && dom) {
		var dropDown = document.getElementById('addFormationAutreCode');
		var opt = document.createElement('OPTION');
		opt.setAttribute('value', aCode);
		opt.appendChild(document.createTextNode(dom));
		dropDown.insertBefore(opt, dropDown.options[indx]);
	}
    /*
    document.forms['inscForm'].elements['delOtherId'].value = aCode;
    document.forms['inscForm'].submit();
    */
}
function newDomaine() {
  	var domaine = document.getElementById('addFormationAutreCode');
  	var niveau  = document.getElementById('addFormationAutreNiveau');
  	
  	var domTabl = document.getElementById('domTable');
  	
  	var cloneSelN = niveau.cloneNode(true);
		cloneSelN.setAttribute('id', 'autre_' + domaine.value);
		cloneSelN.removeAttribute('name');
		cloneSelN.setAttribute('name', 'autre_' + domaine.value);
		cloneSelN.options[niveau.selectedIndex].selected = true;
	
	var newRow = document.createElement('TR');
		newRow.setAttribute('id', 'dom' + domaine.value);

	newRow = document.getElementById('hrForm').parentNode.insertBefore(newRow, document.getElementById('hrForm'));
	
	var domName = document.createElement('LABEL');
	domName.setAttribute('for', 'autre_' + domaine.value);
	domName.appendChild(document.createTextNode(domaine.options[domaine.selectedIndex].text));
	
	var supprimer = document.createElement('A');
	var supText = document.createTextNode('(supprimer)');
	supprimer.href = 'javascript:removeOther("' + domaine.value + '", ' + domaine.selectedIndex + ', "' + domaine.options[domaine.selectedIndex].text + '")';
	supprimer.appendChild(supText);
	
	newRow.insertCell(-1).appendChild(domName);
	newRow.insertCell(-1).appendChild(cloneSelN);
	newRow.insertCell(-1).appendChild(supprimer);
	
	domaine.removeChild(domaine.options[domaine.selectedIndex]);

	showRow('hidden', 'autreFormation');

  	return false;
}

/* inscription 4 */ 

function notThis(cp) {
    var ChampsOui = document.getElementById('cpy_' + cp);
    var ChampsNon = document.getElementById('cpn_' + cp);
    var label = getLabelForId('cpy_' + cp);
    if(ChampsNon.checked)
      label.className = 'pasCeChamp';
    else label.className = 'normal';
    if(ChampsNon.checked) ChampsOui.checked = false;
    checkRequiredFieldset('champsPratiqueRech');
	return false;
}

function yesThis(cp) {
    var ChampsOui = document.getElementById('cpy_' + cp);
    var ChampsNon = document.getElementById('cpn_' + cp);
    var label = getLabelForId('cpy_' + cp);
    if(ChampsOui.checked)
      label.className = 'ceChamp';
    else label.className = 'normal';
    if(ChampsOui.checked) ChampsNon.checked = false;
    checkRequiredFieldset('champsPratiqueRech');
	return false;
}

function doDeleteCV() {
    document.forms['inscForm'].elements['delCV'].value = '1';
    document.forms['inscForm'].submit();
}

function preview() {
   previewWnd = window.open('./visualiser.php','previewWnd',
                              'left=10,' + 
                              'top=10,' + 
                              'width=760,' +
                              'height=450,' +
                              'menubar=no,' +
                              'scrollbars=yes,' +
                              'resizable=yes', +
                              'dependant=yes');
   if (!previewWnd.opener) {
     previewWnd.opener = self;
   }
   previewWnd.focus();
}
