function opera(URL)
{
	var sesionCancelada = false;
	
	//$("#moduloAdvertencia").slideUp("slow");
	$("#moduloAdvertencia").hide();

	/* Primero de todo : Resetear los valores de las listas */

	
	
	//creamos el objeto 
	objXML=getHttpObject();

	//función cliente para el método POST 
	objXML.open("POST",URL,true); //abrir procesador
    objXML.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //cabeceras POST

    //Cargamos datos ya pintados
    var codProvincia = document.form_encuentranos_01.provincia.options[document.form_encuentranos_01.provincia.selectedIndex].value; 
    var codEspecialidad = document.form_encuentranos_01.especialidad.options[document.form_encuentranos_01.especialidad.selectedIndex].value;
    var codProducto = document.form_encuentranos_01.producto.options[document.form_encuentranos_01.producto.selectedIndex].value;
    
    /* cabeceras POST */ 
    if (codProvincia != null && codProvincia.length > 0 && codProvincia != "0")
    	objXML.setRequestHeader('codProvincia',codProvincia);
    
    if (codProducto != null && codProducto.length > 0 && codProducto != "0")
    	objXML.setRequestHeader('codProducto',codProducto);
    
    if (codEspecialidad != null && codEspecialidad.length > 0 && codEspecialidad != "0")
    	objXML.setRequestHeader('codEspecialidad',codEspecialidad);
       		
	//Si la respuesta es XML
	if (objXML.overrideMimeType)
		objXML.overrideMimeType('text/xml'); 	

	//var msg = "<div style='text-align:center'><img src='/img/site_citas/css/gfx/cargando5.gif' border='0' alt='Cargando' /></div>";
	
	//$('#modulo_01').block(msg);
		
	 $().ajaxStart(function(){  
         $("#loading").show();  
     }); 

	 
	//una vez enviado los valores inmediatamente llamamos a la propiedad onreadystatechange 
	objXML.onreadystatechange=function()
	{ 
		
		if (objXML.readyState	==	4) 
		{ 

		 
		//	$('#modulo_01').unblock();
			
		   //si se da un status 200 (TERMINADO CON EXITO)
           if(objXML.status == 200)
           {   
        	  
        		
        	   
				var respuestaTexto = objXML.responseText;
				
				/* Carga Poblaciones */
				if (URL.toLowerCase().indexOf("medicos/centros/xml/carga/poblaciones") != -1)
				{   
					/* Pintamos las Poblaciones */
					setPoblaciones(respuestaTexto);
					
					/* Pintamos las Especialidades */
					setEspecialidades(respuestaTexto);
					
					document.getElementById("subespecialidad").selectedIndex = 0;
						
				}
				else if (URL.toLowerCase().indexOf("medicos/centros/xml/carga/subespecialidades") != -1)
				{
					/* Pintamos las SubEspecialidades */
					setSubEspecialidades(respuestaTexto);
				
				}
				else if (URL.toLowerCase().indexOf("medicos/centros/productos/xml/carga/provincias") != -1)
				{
					/* Pintamos las provincias y especialidades dependientes del producto seleccionado */
					setProvincias(respuestaTexto);
					
					setEspecialidades(respuestaTexto);			
					
					document.getElementById("poblacion").selectedIndex = 0;
					document.getElementById("subespecialidad").selectedIndex = 0;
				}
				else if (URL.toLowerCase().indexOf("medicos/centros/xml/recarga/generales") != -1)
				{	
					/* Recarga las opciones originales de Provincias y Especialidades */					
					setProvincias(respuestaTexto);
					
					setEspecialidades(respuestaTexto);					
				}
				else if (URL.toLowerCase().indexOf("medicos/centros/xml/rellena/poblaciones/subespecialidades") != -1)
				{	
					/* Pintamos las Poblaciones */
					setPoblaciones(respuestaTexto);
					
					/* Pintamos las SubEspecialidades */
					setSubEspecialidades(respuestaTexto);				
				}
			 } // if(objXML.status == 200)
           else
           {   
        	   //alert("Se ha producido un error en la consulta.");
   				$("#textoAdvertencia").text("Se ha producido un error en la consulta.");
   				$("#moduloAdvertencia").show();
   				
   				sesionCancelada = true;
        	   
           }
           
           $().ajaxStop(function(){      
               $("#loading").hide(); 
      }); 
           
	   } // if (objXML.readyState	==	4)		
	}
  
	//obligatorio ....  si no se envia algo el proceso no funciona
	objXML.send(null);
	
	if (sesionCancelada)
		location.href=ctx + "/pages/error/sesionCancelada.jsp";
	
}

function operaVolver(URL)
{	
	//$("#moduloAdvertencia").slideUp("slow");
	$("#moduloAdvertencia").hide();

	//creamos el objeto 
	objXML=getHttpObject();
	
	//función cliente para el método POST 
	objXML.open("POST",URL,true); //abrir procesador
    objXML.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //cabeceras POST

    //Si la respuesta es XML
	if (objXML.overrideMimeType)
		objXML.overrideMimeType('text/xml'); 	

	var msg = "<div style='text-align:center'><img src='/img/site_citas/css/gfx/cargando5.gif' border='0' alt='Cargando' /></div>";
	
	//$('#modulo_01').block(msg);
	
	//alert("URL en opera:" + URL);
		
	//una vez enviado los valores inmediatamente llamamos a la propiedad onreadystatechange 
	objXML.onreadystatechange=function()
	{ 
		
		if (objXML.readyState	==	4) 
		{ 

		//	$('#modulo_01').unblock(); 

		   //si se da un status 200 (TERMINADO CON EXITO)
           if(objXML.status == 200)
           {   
				var respuestaTexto = objXML.responseText;
					
				/* Pintamos las Provincias */
				setProvincias(respuestaTexto);
				
				/* Pintamos las Especialidades */
				setEspecialidades(respuestaTexto);	
				
				/* Pintamos las Poblaciones */
				setPoblaciones(respuestaTexto);
				
				/* Pintamos las SUBEspecialidades */
				setSubEspecialidades(respuestaTexto);
						
				
			 } // if(objXML.status == 200)
           else
           {   
        	   //alert("Se ha producido un error en la consulta.");
   				$("#textoAdvertencia").text("Se ha producido un error en la consulta.");
   				$("#moduloAdvertencia").show();
   				
   				
        	   
           }
	   } // if (objXML.readyState	==	4)		
	}
  
	//obligatorio ....  si no se envia algo el proceso no funciona
	objXML.send(null);
}

function setPoblaciones(xml)
{
	if (xml == null)
		alert("Se ha producido un error."); 
	else
	{		
		objXML=createXML(xml);
			
		var arrayPoblacion = objXML.getElementsByTagName("poblacion");
		var lista = document.getElementById("poblacion");
	
		/* vaciar la lista primero */
		resetcombo(lista);
		
		for (var i = 0; i < arrayPoblacion.length; i++)
		{
			lista.options[(i+1)] = new Option(arrayPoblacion[i].attributes.getNamedItem("desc").value,arrayPoblacion[i].attributes.getNamedItem("cod").value);
			
			if (arrayPoblacion[i].attributes.getNamedItem("sel") != null)
				lista.options[(i+1)].selected = true;
		}
				
	}
}

function setEspecialidades(xml)
{
	if (xml == null)
		alert("Se ha producido un error."); 
	else
	{		
		objXML=createXML(xml);
			
		var arrayEspecialidad = objXML.getElementsByTagName("especialidad");
		var lista = document.getElementById("especialidad");
	
		/* vaciar la lista primero */
		resetcombo(lista);
		
		for (var i = 0; i < arrayEspecialidad.length; i++)
		{
			lista.options[(i+1)] = new Option(arrayEspecialidad[i].attributes.getNamedItem("desc").value,arrayEspecialidad[i].attributes.getNamedItem("cod").value);
			
			if (arrayEspecialidad[i].attributes.getNamedItem("sel") != null)
				lista.options[(i+1)].selected = true;		
		}
				
	}
}

function setSubEspecialidades(xml)
{
	if (xml == null)
		alert("Se ha producido un error."); 
	else
	{		
		objXML=createXML(xml);
			
		var arraySubEspecialidad = objXML.getElementsByTagName("subespecialidad");
		var lista = document.getElementById("subespecialidad");
	
		/* vaciar la lista primero */
		resetcombo(lista);
		
		
		for (var i = 0; i < arraySubEspecialidad.length; i++)
		{
			lista.options[(i+1)] = new Option(arraySubEspecialidad[i].attributes.getNamedItem("desc").value,arraySubEspecialidad[i].attributes.getNamedItem("cod").value);
			
			if (arraySubEspecialidad[i].attributes.getNamedItem("sel") != null)
				lista.options[(i+1)].selected = true;
		}
				
	}
}

function setProvincias(xml)
{
	if (xml == null)
		alert("Se ha producido un error."); 
	else
	{		
		objXML=createXML(xml);
			
		var arrayProvincia = objXML.getElementsByTagName("provincia");
		var lista = document.getElementById("provincia");
	
		/* vaciar la lista primero */
		resetcombo(lista);
		
		for (var i = 0; i < arrayProvincia.length; i++)
		{
			lista.options[(i+1)] = new Option(arrayProvincia[i].attributes.getNamedItem("desc").value,arrayProvincia[i].attributes.getNamedItem("cod").value);
			
			if (arrayProvincia[i].attributes.getNamedItem("sel") != null)
				lista.options[(i+1)].selected = true;
		}
				
	}
}

//Se resetea todas menos la primera posicion "Seleccione ..."
function resetcombo(obj)
{
	/* vaciar la lista 
	OJO: Se recorre desde el final al principio, porque sino, NO FUNCIONA */	
	for(var i=obj.options.length-1; i>=1 ;i--)
		obj.remove(i);

	//Se selecciona por defecto la unica opcion
	obj.options.selectedIndex = 0;
}

function changeProv(obj,url)
{
	if (obj.selectedIndex > 0)
		opera(url);
	else
	{
		resetcombo(document.getElementById("poblacion"));	
		document.getElementById("especialidad").selectedIndex = 0;
		document.getElementById("subespecialidad").selectedIndex = 0;
	}
}

function changeEspe(obj,url)
{
	if (obj.selectedIndex > 0)
		opera(url);
	else		
		resetcombo(document.getElementById("subespecialidad"));
}
