// Script de mise à jour automatique des listes de choix en fonction des critères sélectionnés

function updateCriteria( obj ) {


    var selectNames = ['bi', 'ep', 'es'];

    if ( obj.value == '' ) return;

    document.body.style.cursor = 'wait';

    for ( var i = 0, count = selectNames.length; i < count; i++ ) {
        if ( obj.name != selectNames[i] && obj.form.elements[selectNames[i]].selectedIndex == 0 ) obj.form.elements[selectNames[i]].disabled = 'disabled';
    }

    var xmlhttp = getXmlHttp();
    xmlhttp.onreadystatechange = function() {
        if ( xmlhttp.readyState == 4 && ( xmlhttp.status == 200 || xmlhttp.status == 304 ) ) {
        
            var xml;
            if ( window.XMLHttpRequest ) xml = xmlhttp.responseXML;
            else if ( window.ActiveXObject ) {
                xml = new ActiveXObject("Microsoft.XMLDOM");
                xml.loadXML(xmlhttp.responseText);
            }
            // Mise a jour des listes
            for ( var i = 0, count = selectNames.length; i < count; i++ ) {
                if ( obj.form.elements[selectNames[i]].selectedIndex != 0 )  continue;
                if ( obj.name != selectNames[i] ) updateSelect(obj.form.elements[selectNames[i]], xml);
            }

            document.body.style.cursor = 'default';
        }
    }
    
    xmlhttp.open('POST', 'http://' + httpHost + baseUri + 'modules/emballages-ajax.php');
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    var data = 'lang=' + lang + '&current=' + obj.name + '&bi=' + obj.form.elements['bi'].value + '&ep=' + obj.form.elements['ep'].value + '&es=' + obj.form.elements['es'].value;
    xmlhttp.send(data);
    return true;

} // end of 'updateCriteria()'

function updateSelect(  select, xml ) {

    var name = select.name, selectedIndex = select.selectedIndex;

    // Suppression des éléments actuels de la liste
    for ( var i = select.length; i > 0; i-- ) select.options[i] = null;

    // Mise a jour avec les données en provenance du XML
    if ( xml.getElementsByTagName(name)[0] ) {
        var items = xml.getElementsByTagName(name)[0].getElementsByTagName('item');
        for ( i = 0, count = items.length; i < count; i++ ) {
            select.options[i + 1] = new Option(items[i].firstChild.nodeValue, items[i].getAttribute('id'));
            if ( selectedIndex == items[i].getAttribute('id') ) select.options[i + 1].selected = 'selected';
        }
    }

    select.disabled = '';

} // end of 'updateSelect()'

// window.onload = function() {
// 
//     var nodes = cssQuery('select[name=bi], select[name=ep], select[name=es]');
//     for ( var i = 0, count = nodes.length; i < count; i++ ) {
//         nodes[i].onchange = function() { return updateCriteria(this); }
//     }
// 
// } // end of 'window.onload' 
