function alternate(obj1, obj2) {
    obj1 = document.getElementById(obj1);
    obj2 = document.getElementById(obj2);
    obj1.style.display = (obj1.style.display == "block") ? "none" : "block";
    obj2.style.display = (obj2.style.display == "block") ? "none" : "block";
}

function checkAllReferences(field) {
    for (i = 0; i < field.length; i++) {
        field[i].checked = true;
    }
    searchReference('selectedCategories', 'selectedTechnologies', 'fr');
}

function uncheckAllReferences(field) {
    for (i = 0; i < field.length; i++) {
        field[i].checked = false;
    }
    searchReference('selectedCategories', 'selectedTechnologies', 'fr');
}


function searchReference(selectedCategoriesId, selectedTechnologiesId) {
    var selectedCategories;
    var selectedTechnologies;
    var content;
    var children;
    var ref1Last;
    var i,j;
    var selectedTechnologyIds ;
    var selectedCategoryIds;
    var refNumber;

    selectedCategories = document.getElementsByName(selectedCategoriesId);
    selectedTechnologies = document.getElementsByName(selectedTechnologiesId);
    selectedCategoryIds = new Array();
    j = 0;
    for (i = 0; i < selectedCategories.length; i++) {
        if (selectedCategories[i].checked) {
            selectedCategoryIds[j] = selectedCategories[i].value;
            j++;
        }
    }
    selectedTechnologyIds = new Array();
    j = 0;
    for (i = 0; i < selectedTechnologies.length; i++) {
        if (selectedTechnologies[i].checked) {
            selectedTechnologyIds[j] = selectedTechnologies[i].value;
            j++;
        }
    }
    content = document.getElementById("content");
    children = content.childNodes;
    ref1Last = false;
    refNumber = 0;

    for (i = 0; i < children.length; i ++) {
        if (children[i].nodeType == 1) {
            if (containsCategoriesOrTechnologies(selectedTechnologyIds, selectedCategoryIds, refNumber++)) {
                if (ref1Last) {
                    children[i].style.backgroundColor = '#ebedef'
                } else {
                    children[i].style.backgroundColor = '#ffffff';
                }
                children[i].style.display = "block";
                ref1Last = !ref1Last;
            } else {
                children[i].style.display = "none";
            }
        }
    }
    return false;
}

function containsCategoriesOrTechnologies(selectedTechnologyIds, selectedCategoryIds, refNumber) {
    var ok;
    var i,n;
    var referenceCategories;
    var referenceTechnologies;
    var element;

    element = document.getElementById("cats" + refNumber);
    if (null != element) {
        referenceCategories = element.childNodes;
    }

    element = document.getElementById("tecs" + refNumber);
    if (null != element) {
        referenceTechnologies = element.childNodes;
    }

    ok = false;

    if (referenceCategories != null) {
        for (n = 0; n < referenceCategories.length && !ok; n++) {
            for (i = 0; i < selectedCategoryIds.length && !ok; i++) {
                if (null != referenceCategories[n] && null != referenceCategories[n].id && referenceCategories[n].nodeType == 1 && new String(referenceCategories[n].id).indexOf(selectedCategoryIds[i]) >= 0)
                    ok = true;
            }
        }
    }

    for (n = 0; n < referenceTechnologies.length && !ok; n ++) {
        for (i = 0; i < selectedTechnologyIds.length && !ok; i++) {
            if (null != referenceTechnologies[n] && null != referenceTechnologies[n].id && referenceTechnologies[n].nodeType == 1 && new String(referenceTechnologies[n].id).indexOf(selectedTechnologyIds[i]) >= 0)
                ok = true;
        }
    }
    return ok;
}