/*****************************************************************************
 *  CETTE SECTION CONTIENT LES FONCTIONS AYANT RAPPORT AVEC LA GESTION
 *  DES CHECKBOX IMAGÉS
 *****************************************************************************/

/**
 *  Cette fonction vérifie si le nombre d'item sélectionné est égale au nombre
 *  d'item total passé en paramètre.  
 */
function checkIfAllSelected(nbSelected, total, name) {
    
    var state = false;
    
    if (nbSelected != 0 && total != 0 && nbSelected == total) {
        setCheckbox(name, true);
        state = true;
    }
    else {
        setCheckbox(name, false);
    }
    
    return state;
}

/**
 *  Cette fonction permet d'attribuer une valeur à un checkbox en fournissant
 *  son Id
 *
 *  @param state Représente une valeur BOOLÉENNE
 */
function setCheckbox(name, state) {
    
    var image = contextPath + "/images/search/uncheck.gif";
    
    if (state) {
        image  = contextPath + "/images/search/check.gif";
    }
    
    try {
        document.getElementById(name).value = state.toString();
    }
    catch (err) {}
    
    if (name == "checkboxAllVilles" || name == "checkboxAllSubregions") {
        
        var shortName = name.replace(/checkbox/, "imgCheckbox");
        document.getElementById(shortName).src = image;
        
    }
    else {
        
        try {
            
            document.getElementById(name).src = image;
        }
        catch(err) {}
    }
}

/**
 *  Cette fonction retourne la valeur du checkbox selon le nom de l'élément passé
 *  en paramètre.
 */
function getCheckboxValue(name) {
    
    var bValue = false;
    
    try {
        if (document.getElementById(name).value == "true") {
            bValue = true;
        }
    }
    catch (err) {
        bValue = null;
    }
    
    return bValue;
    
}

/**
 *  Cette fonction met à true ou false un checkbox selon l'état initial qu'il est.
 */
function toggleCheckbox(name) {

    var checkboxValue;

    if (currentSubregionId != -1){

        // Récupère la valeur du checkbox avant le click
        checkboxValue = getCheckboxValue(name);
        // Fait une inversion du checkbox selon sa valeur avant le click
        setCheckbox(name, !checkboxValue);
        // Cette méthode s'occupe de dispatcher l'action requise par le checkbox coché
        dispatchAction(name);

    }else if (currentRegionId != -1) {

        // Récupère la valeur du checkbox avant le click
        checkboxValue = getCheckboxValue(name);
        // Fait une inversion du checkbox selon sa valeur avant le click
        setCheckbox(name, !checkboxValue);
        // Cette méthode s'occupe de dispatcher l'action requise par le checkbox coché
        dispatchAction(name);

    }
    
}

/**
 *  Cette fonction permet de faire un dispatch selon le nom du checkbox passée
 *  en paramètre lorsque la fonction toggleCheckbox est appellé. Sinon, rien
 *  ne se passerait.
 */
function dispatchAction(name) {

    if (name.match("checkboxAllVilles")) {
        checkAllVillesFromSubregion();
    }
    else if (name.match("checkboxAllSubregions")) {
        checkAllSubregionFromRegion();
        
    }
}


function deactivateCheckAllVille() {
    setCheckbox("checkboxAllVilles", false);
}
