
if (typeof HDModBuscadorProductos != 'function') {
	
	
	HDModBuscadorProductos_filtra = function(filtros) {			
	
		filtros = filtros || {};
						
		// 'frm' es el nodo del formulario con los filtros
		// Obtenemos todos los nodos 'select' dentro de 'frm'									
		
		var valor;
		
		var combos = this.getElementsByTagName('SELECT');		
		
		// Buscamos la URL del WS
		var url = this['_src'].value;		
		
		for (var i = 0; i < combos.length; i++) {
			
			var combo = combos[i];
			
			if (combo.selectedIndex) {						
				valor = combo.options[combo.selectedIndex].value;
			} else if (combo.name in filtros) {
				valor = filtros[combo.name];
			} else {
				valor = '';
			}
						
			url = addToURL(url, combo.name, valor);			
												
		}				
		
		var frm = this;
		
		var oAjax = dameAjax();
		
		with (oAjax) {										
		
			onreadystatechange = function() { 

				if (oAjax && (oAjax.readyState == 4)) {			
						
					var xml = oAjax.responseXML;
		
					var root = xml.documentElement;
					var criterios = root.childNodes;					
									
					var combos = frm.getElementsByTagName('SELECT');			
							
					for (var i = 0; i < combos.length; i++) {
					
						var combo = combos[i];
						
						if (combo.selectedIndex) {						
							var valor = combo.options[combo.selectedIndex].value;
						} else if (combo.name in filtros) {
							var valor = filtros[combo.name];
						} else {
							var valor = null;
						}
						
						//var valor = combo.options[combo.selectedIndex].value;
					
						// Eliminamos todas las opciones del combo, excepto la primera
						combo.options.length = 1;	
					
						for (var j = 0; j < criterios.length; j++) {
							
							if (criterios[j].nodeType == 1 && criterios[j].nodeName == combo.name) {
							
								var lista = criterios[j].childNodes;
							
								for (var k = 0; k < lista.length; k++) {
									
									if (lista[k].nodeType == 1) {
									
										try {
									
											var o = document.createElement('OPTION');
										
											var otext = lista[k].getElementsByTagName('Nombre').item(0).childNodes.item(0).nodeValue; // Nombre
											var ovalue = lista[k].getElementsByTagName('Id').item(0).childNodes.item(0).nodeValue; // Id
											
											combo.options[combo.options.length] = new Option(otext, ovalue);									
											
										} catch(e) {
										}										
									}									
								}												
							}					
						}
						
						// Restaurar valor seleccionado
						if (valor) {
							for (var j = 0; j < combo.options.length; j++) {
								if (combo.options[j].value == valor) {
									combo.selectedIndex = j;
									break;
								}
							}
						}

					}
				}
			};				
			
			open('GET', url, true);
			
			send(null);
		}

	}
	
	HDModBuscadorProductos = function(frm_id, filtros) {
		
		if (typeof frm_id == 'undefined') {
			return false;
		}
		
		filtros = filtros || {};
		
		var frm = document.getElementById(frm_id);
		frm.filtra = HDModBuscadorProductos_filtra;
		
		var combos = frm.getElementsByTagName('SELECT');		
		
		for (var i = 0; i < combos.length; i++) {
			
			var combo = combos.item(i);			
			combo.onchange = function() { getForm(this).filtra() };
			
		}
				
		frm.filtra(filtros);		
		return true;
		
	}

}
