// JavaScript Document

function CheckDateEnquete(date) {
	// Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
	// Le séparateur est défini dans la variable separateur
	var amin=1900; // année mini
	var amax=9999; // année maxi
	var separateur="/"; // separateur entre jour/mois/annee

    var d=date.value;

    var j=(d.substring(0,2));
	var m=(d.substring(3,5));
	var a=(d.substring(6));
	var ok=1;
	if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
        ok=0;
	}
	if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
		ok=0;
	}
	if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
		ok=0;
	}
	if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {
		ok=0;
	}
	if (ok == 1) {
	    return true;
	} else {
        alert('Merci de saisir une date valide en respectant le format "JJ/MM/AAAA".');
        document.getElementById(date.id).value = '';
        document.getElementById(date.id).focus();
        return false;
    }
}

function CheckNumEnquete(num) {
    if (isNaN(num.value)) {
        alert('Les caractères ^ \' " & # ¤ $ ne sont pas acceptés.');
        document.getElementById(num.id).value = '';
        document.getElementById(num.id).focus();
        return false;
	} else {
        return true;
    }
}

function classement (numero, option) {

    if (!CheckObligation(numero, document.getElementById('question_'+numero)) ) {
        return false;
    }

    var i = 1;
    if (document.getElementById(option)) {
        option = document.getElementById(option);
    }

    while(document.getElementById('question_'+numero+'_reponse_'+i+'_label').innerHTML != '') {
        i++;
    }

    if (document.getElementById('question_'+numero+'_reponse_'+i+'_label')) {
        document.getElementById('question_'+numero+'_reponse_'+i+'_label').innerHTML = option.innerHTML;
        document.getElementById('question_'+numero+'_reponse_'+i).value = option.value;
        document.getElementById('question_'+numero).remove(option.index);
    }
}

function InitClassement(numero) {
    var i = 1;
    var id;
    var label;
    while(document.getElementById('question_'+numero+'_reponse_'+i+'_label') && document.getElementById('question_'+numero+'_reponse_'+i+'_label').innerHTML != '') {
        id = document.getElementById('question_'+numero+'_reponse_'+i).value;
        label = document.getElementById('question_'+numero+'_reponse_'+i+'_label').innerHTML;
        document.getElementById('question_'+numero+'_reponse_'+i+'_label').innerHTML = '';
        document.getElementById('question_'+numero+'_reponse_'+i).value = '';

        var dmc = document.createElement("option");
        dmc.value = id;
        dmc.text = label;
        dmc.id = 'reponse_'+id;
        dmc.setAttribute('ondblclick', 'classement(\''+numero+'\', this)');
        dmc.setAttribute('onclick', 'return CheckObligation(\''+numero+'\', this)');
        if(!document.all){
            before= document.getElementById('question_'+numero).options[1];
        }else{
            before=1;
        }

        document.getElementById('question_'+numero).add(dmc, before);
        i++;
    }
}

function CheckObligation(numero, reponse, id) {
    var prec = numero - 1;
    var i = prec;
    var ok = 1;
    var obli = 0;
    var obliTab = new Array();
    while (document.getElementById('obligatoire_'+i)) {
        if (document.getElementById('obligatoire_'+i).value == 1) {
            obliTab.push(i);
            obli = 1;
        }
        i--;
    }

    obliTab.reverse();
    if (document.getElementById('typologie_'+prec)) {
        var typo = document.getElementById('typologie_'+prec).value;
    }
    if (obli == 1) {
        var prec2 = prec;
        for (var k = 0 ; k < obliTab.length ; k++) {

            prec = obliTab[k];
            if (ok == 1) {
                if (document.getElementById('typologie_'+prec)) {
                    var typo = document.getElementById('typologie_'+prec).value;
                }

                if (typo == 1 || typo == 2 || typo == 4 || typo == 5) {
                    var i = 0;
                    var valid = 0;
                    while(document.getElementById('question_'+prec+'_'+i)) {
                        if (document.getElementById('question_'+prec+'_'+i).checked == true) {
                            valid = 1;
                        }
                        i++;
                    }
                    if (valid == 0) {
                        ok = 0;
                    }
                }

                if (typo == 3 || typo == 6) {
                    var i = 0;
                    var j = 0;
                    var valid = 0;
                    while(document.getElementById('question_'+prec+'_'+i+'_'+j)) {
                        while(document.getElementById('question_'+prec+'_'+i+'_'+j)) {


                            if (document.getElementById('question_'+prec+'_'+i+'_'+j).checked == true) {
                                valid = 1;
                            }

                            j++;
                        }

                        if (valid == 0) {
                            ok = 0;
                        }
                        valid = 0;
                        j = 0;
                        i++;
                    }
                }


                if (typo == 7) {

                    var i = 1;
                    while(document.getElementById('question_'+prec+'_reponse_'+i)) {
                        if (document.getElementById('question_'+prec+'_reponse_'+i).value == '') {
                            ok = 0;
                        }
                        i++;
                    }
                }
                if (typo == 8 || typo == 9 || typo == 10) {
                    if (document.getElementById('question_'+prec).value == '') {
                        ok = 0;

                    }
                }

                if (ok == 0) {
                    alert('Merci de répondre à la question n°'+prec+' avant de passer à la question suivante.');
                }
            }
            prec = prec2;
        }
    }

    if ((typo == 4 || typo == 5 || typo == 6) && ok == 1) {
        ok = checkNbReponse(numero, prec, typo);
    }

    if (ok == 1) {
        if (reponse.type != "textarea" || !reponse.type) {
            if (document.getElementById('typologie_'+numero)) {
                typo2 = document.getElementById('typologie_'+numero).value;
                if (typo2 == 1 || typo2 == 2) {
                	if (typeof(id) == "undefined") {
                		var id = numero;
                	}
                    VerifAssosRedirec(numero, reponse, id);
                }
            }
        }
        return true;
    } else {
        if (document.getElementById('question_'+numero)) {
            document.getElementById('question_'+numero).blur();
        }
        if (document.getElementById('typologie_'+numero)) {
            typo2 = document.getElementById('typologie_'+numero).value;

            if (typo2 == 1 || typo2 == 2) {
                var i = 0;
                while(document.getElementById('question_'+numero+'_'+i)) {
                    document.getElementById('question_'+numero+'_'+i).checked = false;
                    i++;
                }
            }
            if (typo2 == 3) {
                var i = 0;
                var j = 0;

                while(document.getElementById('question_'+numero+'_'+i+'_'+j)) {
                    while(document.getElementById('question_'+numero+'_'+i+'_'+j)) {
                        document.getElementById('question_'+numero+'_'+i+'_'+j).checked = false;
                        j++;
                    }
                    j = 0;
                    i++;
                }
            }
        }
        return false;
    }
}

function checkNbReponse(numero, prec, typo) {
    var ok = 1;
    var nb = 0;
    var i = 0;
    var j = 0;
    if (document.getElementById('min_'+prec)) {
    	var min = document.getElementById('min_'+prec).value;
    }
    if (document.getElementById('max_'+prec)) {
    	var max = document.getElementById('max_'+prec).value;
    }
    if (typo == 4 || typo == 5) {
        while(document.getElementById('question_'+prec+'_'+i)) {
            if (document.getElementById('question_'+prec+'_'+i).checked == true) {
                nb++;
            }
            i++;
        }
        if (min != '' && nb < min) {
            ok = 0;
            alert('Vous devez sélectionner un minimum de '+min+' réponses pour la question n°'+prec+'. Merci d\'élargir vos choix.');
        }
        if (max != '' && nb > max) {
            ok = 0;
            alert('Vous ne pouvez pas choisir plus de '+max+' réponses pour la question n°'+prec+'. Merci de limiter vos choix.');
        }
    } else if (typo == 6) {

        while(document.getElementById('question_'+prec+'_'+i+'_'+j)) {
            nb = 0;
            while(document.getElementById('question_'+prec+'_'+i+'_'+j)) {

                if (document.getElementById('question_'+prec+'_'+i+'_'+j).checked == true) {
                    nb++;

                }
                j++;
            }
            if (min != '' && nb < min) {
                ok = 0;
                //alert('Vous devez sélectionner un minimum de '+min+' réponses pour la question n°'+prec+'. Merci d\'élargir vos choix.');
            }
            if (max != '' && nb > max) {
                ok = 0;
                //alert('Vous ne pouvez pas choisir plus de '+max+' réponses pour la question n°'+prec+'. Merci de limiter vos choix.');
            }
            j = 0;
            i++;
        }
        if (ok == 0) {
            alert('Pour la question n°'+prec+', vous devez sélectionner entre '+min+' et '+max+' réponses par ligne.');
        }
    }

    return ok;
}

function VerifAssosRedirec(numero, reponse, id) {
    if (document.getElementById('redirection_'+numero+'_'+reponse.value)) {
        var redirection = document.getElementById('redirection_'+numero+'_'+reponse.value).value;
    }
    
    if (document.getElementById('association_'+numero+'_'+reponse.value)) {
        var association = document.getElementById('association_'+numero+'_'+reponse.value).value;
    }
    
    if (document.getElementById('rechargementAgain_'+numero+'_'+reponse.value) && document.getElementById('association_'+numero+'_'+reponse.value).value != 0) {
        var recharge = document.getElementById('rechargementAgain_'+numero).value;
    }
    
    if (document.getElementById('AssocRedirect_'+numero) && document.getElementById('AssocRedirect_'+numero) != 0) {
    	var AssocRedirect = document.getElementById('AssocRedirect_'+numero).value;
    }
    
    if (document.getElementById('reponsePrecedente_'+numero) && document.getElementById('reponsePrecedente_'+numero).value != '' && document.getElementById('reponsePrecedente_'+numero).value != reponse.value) {
    	var tmp = document.getElementById('reponsePrecedente_'+numero).value;
    	if (tmp != '' && ((document.getElementById('redirection_'+numero+'_'+tmp) && document.getElementById('redirection_'+numero+'_'+tmp).value != '') || (document.getElementById('association_'+numero+'_'+tmp) && document.getElementById('association_'+numero+'_'+tmp).value != '0'))) {
    		var recharge = 1;
    	}
    }
    
    if (association > 0 || redirection || recharge || AssocRedirect > 0) {
        document.getElementById('rechargement').value = reponse.value;
        document.getElementById('rechargement-question').value = id;

        document.getElementById('form-enquete').submit();
    }

}


function countchars2(obj, imax) {

 var o = document.getElementById(obj.id + '_maxcarshow');
	if (o) {
	 	if ( imax ) {
			if (imax < obj.value.length) {
				obj.value = obj.value.substring(0, imax);
			}
			o.innerHTML = obj.value.length + '/' + imax + ' caract&egrave;res ';
		 } else {
		 	imax = 3000;
			if (imax < obj.value.length) {
				obj.value = obj.value.substring(0, imax);
			}
			o.innerHTML = obj.value.length + '/' + imax + ' caract&egrave;res ';
		}
	}
}


function countcharsStop(obj, imax) {

 var o = document.getElementById(obj.id + '_maxcarshow');

	if (o) {
	 	if ( imax ) {
			if (imax < obj.value.length) {
				obj.value = obj.value.substring(0, imax);
			}
		}
	}
}
