function updateSousFamille( evt, filtre ) {
    var obj = $('select_famille');

    var fct = function( xml, filtre ) {
        var part = $( 'select_sousfamille' );
        part.options.length = 0;

        var x = xml.getElementsByTagName('sous_famille');
        part.options.length = x.length;
        for (var i=0; i<x.length; i++ ) {
            part.options[i].value = getProp( x[i], "id" );
            part.options[i].text  = getNodeValue( x[i] );
        }

        updateProduits( null, filtre );
	}

    getXml( 'famille_famille', obj.value, fct, filtre );
}

function updateProduits( evt, filtre ) {
    var obj = $( 'select_sousfamille' );

    var fct = function( xml ) {
        var part = $( 'select_produit' );
        part.options.length=0;

        var x = xml.getElementsByTagName( 'produit' );
        part.options.length = x.length;
        for( var i=0; i<x.length; i++ ) {
            part.options[i].value = getProp( x[i], "id" );
            part.options[i].text = getNodeValue( x[i] );
        }
    }

    getXml( 'famille_produit', obj.value, fct, filtre );
}



/*                                    */
var produit_sn = new Array();

function updateSousFamilleSN( evt, filtre ) {
    var obj = $('select_famille');

    var fct = function( xml ) {
        var part = $( 'select_sousfamille' );
        part.options.length = 0;

        var x = xml.getElementsByTagName('sous_famille');
        part.options.length = x.length;
        for (var i=0; i<x.length; i++ ) {
            part.options[i].value = getProp( x[i], "id" );
            part.options[i].text  = getNodeValue( x[i] );
        }

        updateProduitsSN( null, filtre );
	}

    getXml( 'famille_famille', obj.value, fct, filtre );
}


function updateProduitsSN( evt, filtre ) {
    var obj = $( 'select_sousfamille' );

    var fct = function( xml ) {
        var part = $( 'select_produit' );
        part.options.length=0;


		var nsResolver = xml.createNSResolver( xml.ownerDocument == null ? xml.documentElement : xml.ownerDocument.documentElement);

        var x = xml.getElementsByTagName( 'produit' );
        part.options.length = x.length;
		produit_sn.length = x.length; 
        for( var i=0; i<x.length; i++ ) {
            part.options[i].value = getProp( x[i], "id" );
            part.options[i].text = getNodeValue( x[i] );
			produit_sn[i] = { id: getProp( x[i], "id"), serials: new Array() };

			// on doit maintenant ajouter tout les regex disponibles
			var xpath = xml.evaluate("serial/item", x[i], nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
			if (xpath == null ) {
				if ( console != null ) {
					console.log("xpath est null !!");
				}
			} else {
				//console.dir( xpath );
				produit_sn[i].serials.length = xpath.snapshotLength;
				for( var j=0; j<xpath.snapshotLength; j++ ) {
					produit_sn[i].serials[j]= { 
											regex: getProp( xpath.snapshotItem(j), "regex" ), 
											regex_help: getProp( xpath.snapshotItem(j), "regex_help" )
										  }
				}
			}
        }
    }

    getXml( 'famille_produitsn', obj.value, fct, filtre );
}

function updateProduitSN( evt ) {
	var part = $('select_produit');
	var selected = part.value;
	for( var i=0; i<produit_sn.length; i++ ) {
		if ( produit_sn[i].id == selected ) {
			var p = $('helpsn');
			var txt = "<ul>";
			for( var j=0; j<produit_sn[i].serials.length; j++ ) {
				txt += "<li>" + produit_sn[i].serials[j].regex_help + "</li>";
			}
			txt+="</ul>";
			p.innerHTML = txt;
		}
	}
}

function testSN( evt ) {
	var part = $('select_produit');
	var selected = part.value;
	for( var i=0; i<produit_sn.length; i++ ) {
		if ( produit_sn[i].id == selected ) {
			var p = $('helpsn');
			var f = document.forms['rma'].serial;	

			if ( f.value.match( produit_sn[i].regex )!= null ) 
				p.innerHTML = "ok";
			else
				p.innerHTML = "pas bon";
				
		}
	}

}
