function objeto_request() {
	
	var objeto_request = false;
	
     try {
		objeto_request = new ActiveXObject("Msxml2.XMLHTTP");
    }catch (e) {
         try { 
			objeto_request = new ActiveXObject("Microsoft.XMLHTTP");
         }catch (E) {
            objeto_request = false; 
        } 
    }
    
    if (!objeto_request && typeof XMLHttpRequest != 'undefined') {
		objeto_request = new XMLHttpRequest();
    }
    
    if(!objeto_request){
		alert("El navegador no soporta el objeto de conexión XMLHttpRequest. Actualícese.");
	}
    
	return objeto_request;
}

var conexion = objeto_request();

function conexion_gestionar_datos_combo_generico(id_control, sp, nombre, script, funcion, con, opc){

	if(! con){
	    var con = objeto_request();
	}else{
		con.abort();
    }	

	var tamanio = document.getElementById(nombre).style.width;
    
	if(parseInt(id_control, 10) != -1){

	    if(tamanio){
		    document.getElementById(nombre).parentNode.style.width = tamanio;
		    document.getElementById(nombre).style.overflow = "hidden";
		}else{
		    document.getElementById(nombre).parentNode.style.width = "100%";
		}
		
		document.getElementById(nombre).parentNode.innerHTML = "<img id='" + nombre + "' src='/images/cargando_16x16.gif' align='center' style='width:16px;height:16px'/><span class='cargando'>&nbsp;cargando ...</span>";

		con.open("GET", "/combo_generico.asp" +
									"?sp=" + sp + 
									"&opc=" + opc + 
									"&nombre=" + nombre + 
									"&tamanio=" + parseInt(tamanio, 10) + 
									"&script=" + script, true);
		
		con.onreadystatechange = 
			function(){
				if(con.readyState == 4){
					if(con.status == 200 || con.status == 0){
                        
					   document.getElementById(nombre).parentNode.innerHTML = con.responseText; 
						
						if(funcion){
							if(funcion.ejecuta){
							    funcion.ejecuta();
							}else{
							    funcion();
							}
						 }
					}else{
						document.getElementById(nombre).parentNode.innerHTML = "<select id='" + nombre + "' name='" + nombre + "' style='width:" + tamanio + "'><option></option></select>";
														
						alert("Error " + con.status + ' ' + con.statusText);
					}
					
					con = null;

				}
				
			}

		con.send(null);
	}else{
		document.getElementById(nombre).parentNode.innerHTML = "<select id='" + nombre + "' name='" + nombre + "' style='width:" + tamanio + "'><option></option></select>";
	}
}

// ------------------------------------------------------------------------

function conexion_gestionar_datos_combo_grupos_generico(id_control, sp, nombre, script, funcion, sincronizacion){

	var con	= objeto_request();
	
	var tamanio = document.getElementById(nombre).style.width;

	//con.abort();

	if(parseInt(id_control, 10) != -1){
	    if(tamanio){
		    document.getElementById(nombre).parentElement.style.width = tamanio;
		}else{
		    document.getElementById(nombre).parentElement.style.width = "100%";
		}
		
		document.getElementById(nombre).parentElement.innerHTML = "<img id='" + nombre + "' src='/intranet/images/cargando_16x16.gif' align='center' width='16px' heifht='16px'/>&nbsp;cargando ...";
		
		con.open("GET", "/intranet/combo_grupos_generico.asp" +
									"?sp=" + sp + 
									"&nombre=" + nombre + 
									"&tamanio=" + parseInt(tamanio, 10) + 
									"&script=" + script, sincronizacion);
		
		con.onreadystatechange = 
			function(){
				if(con.readyState == 4){
					if(con.status == 200 || con.status == 0){

					   document.getElementById(nombre).parentElement.innerHTML = con.responseText; 
						
						if(funcion){
							// document.getElementById(document.getElementById(id).firstChild.id).value = "";
							funcion.ejecuta();
						 }
					}else{
						document.getElementById(nombre).parentElement.innerHTML = "<select id='" + nombre + "' name='" + nombre + "' style='width:" + tamanio + "'></select>";
														
						alert("Error " + con.status + ' ' + con.statusText);
					}
					
					con = null;

				}
				
			}

		con.send(null);
	}else{
		document.getElementById(nombre).parentElement.innerHTML = "<select id='" + nombre + "' name='" + nombre + "' style='width:" + tamanio + "'></select>";
	}
}

// ------------------------------------------------------------------------


function conexion_gestionar_datos_POST_generico(url, valores, callback){
    
    var con	= objeto_request();
    var valores_back = null;
    var error = "";
    var resultado = "";
    
    con.open ('POST', url, true);
     
    con.onreadystatechange = function(){
                                if (con.readyState==4){
                                   if(con.status==200){
                                        
                                        var texto = con.responseText.split("#");
                                        
                                        error     = texto[0];
                                        resultado = texto[1];
                                        
                                        if(texto.length > 2){
                                            valores_back = texto[2].split("|");
                                        }    
                                    }else{
                                        error     = 2
                                        resultado = "Error " + con.status + ' ' + con.statusText
                                    }

                                     callback(error, resultado, valores_back);
                                }
                            }
    
     con.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     con.send(valores.replace(/[ ]/gi,encodeURI(" ")));
     return;
}

// ------------------------------------------------------------------------

function fn_obtener_valores_formulario(formu){
    var valores = "";
    var ok = true;
    var j = 0;
    
    for(var i=0; i<formu.elements.length; i++){
        if(formu.elements[i].name){
            ok = true;
            
            if(formu.elements[i].type == "radio" || formu.elements[i].type == "checkbox"){
                if(! formu.elements[i].checked){
                    ok = false;
                }
            }
            
            if(ok){
                valores += (j>0?"&":"") + formu.elements[i].name + "=" + formu.elements[i].value;

                j++;
            }
        }
    }
    
    return valores;   
}