function nuevoAjax()
{
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false;
	try
	{
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			// Creacion del objet AJAX para IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E)
		{
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
		}
	}
	return xmlhttp;
}

/*Variable que almacena el identificador del n?mero de identificaci?n tributaria (NIT)
 * en la base de datos, y el de los tipos de personas
 */

var nit=3;

var persona_natural=3;
var persona_juridica=4;

//Variables y arreglos para el manejo de selects dependientes
// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var tabla=new Array();
var arreglo=new Array(new Array(),new Array(),new Array);
tabla[0]="pqr_region";
tabla[1]="pqr_asunto";
tabla[2]="pqr_dependencia";

arreglo[0][0]="ubicacion_n1";
arreglo[0][1]="ubicacion_n2";
arreglo[0][2]="ubicacion_n3";
arreglo[0][3]="ubicacion_n4";
arreglo[0][4]="ubicacion_n5";

arreglo[1][0]="asunto_n1";
arreglo[1][1]="asunto_n2";
arreglo[1][2]="asunto_n3";
arreglo[1][3]="asunto_n4";
arreglo[1][4]="asunto_n5";

arreglo[2][0]="dependencia_n1";
arreglo[2][1]="dependencia_n2";
arreglo[2][2]="dependencia_n3";
arreglo[2][3]="dependencia_n4";
arreglo[2][4]="dependencia_n5";

function buscarEnArray(array,dato)
{
	// Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
	var x=0;
	while(array[x])
	{
		if(array[x]==dato) return x;
		x++;
	}
	return null;
}

function cargaContenido(idSelectOrigen,tablaSeleccionada)
{

	// Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
	var posicionTabla=buscarEnArray(tabla,tablaSeleccionada);
	var posicionSelectDestino=buscarEnArray(arreglo[posicionTabla], idSelectOrigen)+1;

	// Obtengo el select que el usuario modifico
	var selectOrigen=document.getElementById(idSelectOrigen);

	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
	var divoption = opcionSeleccionada;
	//Llama la funci?n que carga los datos adicionales
	cargaDatosAdministracion(opcionSeleccionada,tablaSeleccionada,idSelectOrigen);

	// Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
	var x=posicionSelectDestino, selectActual=null;

	// Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
	while(arreglo[posicionTabla][x])
	{
		if(selectActual=document.getElementById(arreglo[posicionTabla][x])){
			selectActual.length=0;

			var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona...";
			selectActual.appendChild(nuevaOpcion);	selectActual.disabled=true;
		}
		x++;
	}

	// Compruebo que el select modificado no sea el ultimo de la cadena
	if(idSelectOrigen!=arreglo[posicionTabla][arreglo[posicionTabla].length-1] && opcionSeleccionada!=0)
	{
		// Obtengo el elemento del select que debo cargar
		var idSelectDestino=arreglo[posicionTabla][posicionSelectDestino];
		var selectDestino=document.getElementById(idSelectDestino);

		// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
		var ajax=nuevoAjax();
		ajax.open("GET", "tools/pqr_select_dependientes_proceso.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada+"&tabla="+tablaSeleccionada, true);
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==1)
			{
				// Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
				selectDestino.length=0;
				var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
				selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;
			}
			if (ajax.readyState==4)
			{
				selectDestino.parentNode.innerHTML=ajax.responseText;
			}
		}
		ajax.send(null);
	}
}

/* CONTROL DE LOS CAMPOS DINAMICOS PARA SUBIR DOCUMENTOS ADJUNTOS */
//Configuraci?n para el manejo de los campos para subir archivos din?micos
//Esta es una variable de control para mantener nombres diferentes de cada campo creado dinamicamente.
var numero = 0;

//esta funcion nos devuelve el tipo de evento disparado
evento = function (evt) {
	return (!evt) ? event : evt;
}

//Función que crea dinamicamente los nuevos campos file
function addCampo()
{

	//Creación del bloque (div) que contendrá el nuevo campo y se le asigna un id, usando la variable numero se le asigna un id único 
    nDiv 			= document.createElement('div');
	nDiv.className 	= 'archivo';
	nDiv.id 		= 'file' + (++numero);
	
	// Se crea el input que recibirá el archivo
	nCampo 			= document.createElement('input');
   	nCampo.name 	= 'archivos[]';
  	nCampo.type 	= 'file';

	//Creacion de un boton para elminar un campo que ya no se desee, con el mismo nombre del div padre, para localizarla.
	a 				= document.createElement('input');
	a.name 			= nDiv.id;
	a.type 			= 'button';
	a.value 		= 'Eliminar';
	a.className 	= 'boton_small_pqr';

	//Establecemos que ejecute esta funcion en el evento onclick
	a.onclick = elimCamp;
	
	nDiv.appendChild(nCampo);	
	nDiv.appendChild(a);
	
	/* Se adiciona la div creada al documento, pero en la div llamada 'adjuntos'*/
   container = document.getElementById('adjuntos');
   container.appendChild(nDiv);
}

//con esta funci?n eliminamos el campo cuyo v?nculo de eliminaci?n sea presionado
function elimCamp(evt)
{
   evt 		= evento(evt);
   nCampo 	= rObj(evt);
   div 		= document.getElementById(nCampo.name);
   div.parentNode.removeChild(div);
}

//con esta función recuperamos una instancia del objeto que disparo el evento
rObj = function (evt) {
   return evt.srcElement ?  evt.srcElement : evt.target;
}

/* Funcion para mostrar/ocultar el textbox del digito de verificacion del NIT */
function mostrarDigitoVerificacion(idLista,idDigitoVerificacion){
	/* Obtengo el select que el usuario modifico, el div del digito de verificacion
	 * y el select del tipo de persona
	 */
	var lista=document.getElementById(idLista);
	var divDigitoVerificacion = document.getElementById(idDigitoVerificacion);
	var lista_tipo_persona = document.getElementById('tipo_persona');

	// Obtengo la opcion que el usuario selecciono
	var opcionSeleccionada=lista.options[lista.selectedIndex].value;

	/*Si el valor seleccionado es el correspondiente al NIT se hace visible la
	 * division que contiene el textbox para el digito de verificacion, en caso
	 * contrario lo oculta
	 */

	if(opcionSeleccionada==nit){
		divDigitoVerificacion.style.visibility="visible";
		if(lista_tipo_persona.options[lista_tipo_persona.selectedIndex].value==persona_natural){
			lista_tipo_persona.selectedIndex=persona_juridica;
		}
	}
	else{
		divDigitoVerificacion.style.visibility="hidden";
		if(lista_tipo_persona.options[lista_tipo_persona.selectedIndex].value==persona_juridica){
			lista_tipo_persona.selectedIndex=persona_natural;
		}
	}
}

/* funci?n para enviar el formulario que almacena las acciones */
function enviarAccion(formulario,accion,id){
	formulario.accion.value=accion;
	formulario.id.value=id;
	formulario.submit();
}
/* funci?n para enviar el formulario que consulta una solicitud */
function enviarConsultaSolicitud(formularioId){
	formulario=document.getElementById(formularioId);
	formulario.submit();
}

function obtenerDescripcion(tipo_id)
{
	var ajax=nuevoAjax();
	var div = document.getElementById('tipo_descripcion');
	
	var divoption = document.getElementById('tipo_solicitud');
	
	ajax.open("GET", "tools/obtenerDescripcion.php?tipo_id="+divoption.value, true);
	
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==1)
		{
			
		}
		if (ajax.readyState==4)
		{
			
			div.innerHTML=ajax.responseText;
			
		}
	}
	ajax.send(null);
}

function cargaDatosAdministracion(opcionSeleccionada,tablaSeleccionada,idSelectOrigen)
{
	//Crea una variable con el nombre de la tabla
	var destinoId="tabla_datos";

	//Tabla destino de los datos
	var tablaDestino;

	if(tablaDestino=document.getElementById(destinoId)){
		//Cambia el valor del bot?n del formulario
		var formularioSolicitud=document.getElementById('form_solicitud');
		formularioSolicitud.form_accion.value='Crear';
		formularioSolicitud.id.value=0;

		//Si la opci?n seleccionada es 0, y el nivel del select seleccionado
		//si es un subnivel la opci?n seleccionada es la opci?n seleccionada
		//en el nivel superior.
		if(opcionSeleccionada==0){
			// Obtengo la posicion que ocupa el select actual en el array declarado mas arriba
			var posicionTabla=buscarEnArray(tabla,tablaSeleccionada);
			var posicionSelectActual=buscarEnArray(arreglo[posicionTabla], idSelectOrigen);

			if(posicionSelectActual>0){
				// Obtengo el select padre
				var selectPadre=document.getElementById(arreglo[posicionTabla][posicionSelectActual-1]);

				// Obtengo la nueva opcion seleccionada
				opcionSeleccionada=selectPadre.options[selectPadre.selectedIndex].value;
			}
		}

		// Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
		var ajax=nuevoAjax();
		ajax.open("GET", "tools/genera_datos_administracion.php?opcion="+opcionSeleccionada+"&tabla="+tablaSeleccionada, true);
		ajax.onreadystatechange=function()
		{
			if (ajax.readyState==1)
			{

			}
			if (ajax.readyState==4)
			{
				tablaDestino.innerHTML=ajax.responseText;
			}
		}
		ajax.send(null);
	}
}
function mostrar_detalles(i){
	if(document.getElementById(i).style.display!="none"){
		document.getElementById(i).style.display="none";
		}else{
			
		document.getElementById(i).style.display="block"
		}
}

