// JavaScript Document
var empresa_actual=0; //almacena la empresa seleccionada
var departamento_actual=0; //almacena el departamento seleccionado
var empleado_actual=0; //almacena el empleado seleccionado
var docXML; //variable general que almacena la respuesta XML de las peticiones
 
  
function crearMotorAJAX(){
	var motorAJAX=false;
	try{
	   motorAJAX = new ActiveXObject("Msxml2.XMLHTTP");
	   }catch(e){
		 try{
		   motorAJAX = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
			  motorAJAX = false;
			}
		}
    if (!motorAJAX && typeof XMLHttpRequest!='undefined') {
       motorAJAX = new XMLHttpRequest();
     }
  return motorAJAX;
} 


function ObtenerDatos(url_peticion){
 var objAJAX=crearMotorAJAX();
 objAJAX.open('GET', url_peticion, false);
 objAJAX.send(null); 
 if (objAJAX.readyState==4)
 {
   docXML=objAJAX.responseXML.documentElement;
   return true;
 }else{
 document.getElementById("contenedor").innerHTML="CARGANDO..."; 
   return false;
 }
} 

function CargarEmpresas(){
	
 var url_peticion="listado_empresas.php";
 if (ObtenerDatos(url_peticion)==true)
 {
   MostrarEmpresas();
  }else{
   alert("Ha ocurrido un error al intentar cargar el listado de empresas.");
 }
} 

function CargarDepartamentos(id_empresa){
 empresa_actual=id_empresa;
 //Actualizamos los datos de un empleado a los genericos por si habia alguno ya presentado
 // Esto se hace porque una buscado un empleado se puede cambiar en el departamento y mientras aparecerá el empleado anterior buscado
 document.getElementById("campoNombre").innerHTML="&nbsp;NOMBRE Y APELLIDOS";
 document.getElementById("campoDireccion").innerHTML="&nbsp;DIRECCION";
 document.getElementById("campoEmail").innerHTML="&nbsp;EMAIL";;
 document.getElementById("campoFoto").innerHTML="FOTO DEL EMPLEADO";
 // Hacemos la peticion
 var url_peticion="listado_departamentos.php?empresa="+empresa_actual; 
 if (ObtenerDatos(url_peticion)==true)
 {
    MostrarDepartamentos();
  }else{
    alert("Error al intentar cargar el listado de departamentos.");
  }
} 

function CargarEmpleados(id_d){
	//Actualizamos los datos de un empleado a los genericos por si habia alguno ya presentado
 // Esto se hace porque una buscado un empleado se puede cambiar en el departamento y mientras aparecerá el empleado anterior buscado
 document.getElementById("campoNombre").innerHTML="&nbsp;NOMBRE Y APELLIDOS";
 document.getElementById("campoDireccion").innerHTML="&nbsp;DIRECCION";
 document.getElementById("campoEmail").innerHTML="&nbsp;EMAIL";;
 document.getElementById("campoFoto").innerHTML="FOTO DEL EMPLEADO";
 // Realizacion de la peticion
var url_peticion="listado_empleados.php?d=" +  id_d;
 if (ObtenerDatos(url_peticion)==true)
  {
    MostrarEmpleados();
  }else{
    alert("Error al intentar cargar el listado de empleados.");
  }
}  
 
function CargarEmpleado(id_empleado){
	//Actualizamos los datos de un empleado a los genericos por si habia alguno ya presentado
 // Esto se hace porque una buscado un empleado se puede cambiar en el departamento y mientras aparecerá el empleado anterior buscado
 document.getElementById("campoNombre").innerHTML="&nbsp;NOMBRE Y APELLIDOS";
 document.getElementById("campoDireccion").innerHTML="&nbsp;DIRECCION";
 document.getElementById("campoEmail").innerHTML="&nbsp;EMAIL";;
 document.getElementById("campoFoto").innerHTML="FOTO DEL EMPLEADO";
 empleado_actual=id_empleado;
 var url_peticion= "empleado.php?empleado="+empleado_actual;

 if (ObtenerDatos(url_peticion)==true)
  {
    PresentarDatosEmpleado();
  }else{
    alert("Error al intentar cargar los datos del empleado.");
  }
}  
 
function MostrarEmpresas(){
 var idATRIB, valorATRIB;
 var listaNodos=docXML.getElementsByTagName("EMPRESA");
 
 for(i=0;i<listaNodos.length;i++)
 {
   idATRIB=""; valorATRIB="";
   listaAtributos=listaNodos[i].attributes;
   for(j=0;j<listaAtributos.length;j++)
    { 
     nombreATRIB=listaAtributos[j].name;
     if (nombreATRIB=="nombre")
       valorATRIB=listaAtributos[j].value;
     if (nombreATRIB=="id")
       idATRIB=listaAtributos[j].value;
    }
 /*Una vez obtenida la información necesaria para construir un elemento de tipo OPTION, se añade
 a la lista de opciones del objeto SELECT de EMPRESAS usando DOM. Para ello se hace:*/
 var elemento=document.createElement("option");
 var valorElemento=document.createTextNode(valorATRIB);
 elemento.appendChild(valorElemento);
 elemento.setAttribute("value",idATRIB);
 document.getElementById("listaEmpresa").appendChild(elemento);
 }
}

function MostrarDepartamentos(){
 // Eliminamos todos los options del select de los departamentos y de los empleados que pudieran haber.
  selec=document.getElementById('listaDepartamento');
  while (selec.hasChildNodes())
      {
         selec.removeChild(selec.firstChild);
      }
	  // Eliminamos todos los options del select de los pueblos que pudieran ver.
  emple=document.getElementById('listaEmpleado');
  while (emple.hasChildNodes())
      {
         emple.removeChild(emple.firstChild);
      }
	// Insertamos un nodo option para la zona blanca para que pueda elegir un departamento
   var elemento=document.createElement("option");
  var valorElemento=document.createTextNode(" ");
  elemento.appendChild(valorElemento);
  elemento.setAttribute("value",0);
  document.getElementById("listaDepartamento").appendChild(elemento);
  
 var idATRIB, valorATRIB;
 var listaNodos=docXML.getElementsByTagName("DEPARTAMENTO");
 for(i=0;i<listaNodos.length;i++)
 { 
  idATRIB=""; valorATRIB="";
  listaAtributos=listaNodos[i].attributes;
  for(j=0;j<listaAtributos.length;j++)
   { 
     nombreATRIB=listaAtributos[j].name;
     if (nombreATRIB=="nombre")  valorATRIB=listaAtributos[j].value;
     if (nombreATRIB=="id") idATRIB=listaAtributos[j].value;
   }
   /*
   ELIMINAMOS LOS ITEMS ACTUALES DE LA LISTA DE DEPARTAMENTOS
   */
  
   /*Una vez obtenida la información necesaria para construir un elemento de tipo OPTION, se 
   añade a la lista de opciones del objeto SELECT de DEPARTAMENTOS usando DOM. Para ello se hace:   */
   var elemento=document.createElement("option");
   var valorElemento=document.createTextNode(valorATRIB);
   elemento.appendChild(valorElemento);
   elemento.setAttribute("value",idATRIB);
   document.getElementById("listaDepartamento").appendChild(elemento);
 }
} 

function MostrarEmpleados()
{
// Eliminamos todos los options del select de los pueblos que pudieran ver.
  selec=document.getElementById('listaEmpleado');
  while (selec.hasChildNodes())
      {
         selec.removeChild(selec.firstChild);
      }
 // Insertamos un nodo option para la zona blanca para que puede elegir un empleado
   var elemento=document.createElement("option");
  var valorElemento=document.createTextNode(" ");
  elemento.appendChild(valorElemento);
  elemento.setAttribute("value",0);
  document.getElementById("listaEmpleado").appendChild(elemento);
  
 var idATRIB;
 var listaNodos=docXML.getElementsByTagName("EMPLEADO");
 for(i=0;i<listaNodos.length;i++)
 {
  idATRIB="";
  subListaNodos=listaNodos[i].childNodes;
  cad="";
  nombreEmpleado="";
  apellidosEmpleado="";
  listaAtributos=listaNodos[i].attributes;
  for(k=0;k<listaAtributos.length;k++)
  {
    nombreATRIB=listaAtributos[k].name;
    if (nombreATRIB=="id")
     idATRIB=listaAtributos[k].value;
  }
  for(j=0;j<subListaNodos.length;j++)
  {
   nombreNodo=subListaNodos[j].nodeName;
   tipoNodo=subListaNodos[j].nodeType;
   if (tipoNodo==1) 
   {
     valorNodo=subListaNodos[j].firstChild.nodeValue;
     if (nombreNodo=="NOMBRE") nombreEmpleado=valorNodo;
     if (nombreNodo=="APELLIDOS") apellidosEmpleado=valorNodo;
   }
  }
  
  /*Una vez obtenida la información necesaria para construir un elemento de tipo OPTION, se añade a la  lista de opciones del objeto SELECT de EMPLEADOS usando DOM. Para ello se hace: */
  var elemento=document.createElement("option");
  var valorElemento=document.createTextNode(nombreEmpleado + " " + apellidosEmpleado);
  elemento.appendChild(valorElemento);
  elemento.setAttribute("value",idATRIB);
  document.getElementById("listaEmpleado").appendChild(elemento);
 }
} 

function PresentarDatosEmpleado()
{
 var nodoEmpleado=docXML;
 var subListaNodos=nodoEmpleado.childNodes;
 cad="";
 nombreEmpleado="";
 apellidosEmpleado="";
 fotoEmpleado="";
 direccionEmpleado="";
 emailEmpleado="";
 for(j=0;j<subListaNodos.length;j++)
 {
  nombreNodo=subListaNodos[j].nodeName;
  tipoNodo=subListaNodos[j].nodeType;
  if (tipoNodo==1)
   {
     valorNodo=subListaNodos[j].firstChild.nodeValue; 
     if (nombreNodo=="NOMBRE") nombreEmpleado=valorNodo;
     if (nombreNodo=="APELLIDOS") apellidosEmpleado=valorNodo;
     if (nombreNodo=="DIRECCION") direccionEmpleado=valorNodo;
     if (nombreNodo=="EMAIL") emailEmpleado=valorNodo;
     if (nombreNodo=="FOTO") fotoEmpleado=valorNodo;
   }
 }
 document.getElementById("campoNombre").innerHTML=nombreEmpleado+"&nbsp;" +apellidosEmpleado;
 document.getElementById("campoDireccion").innerHTML=direccionEmpleado;
 document.getElementById("campoEmail").innerHTML=emailEmpleado;
 if(fotoEmpleado!="") document.getElementById("campoFoto").innerHTML="<img src='images/" + fotoEmpleado + "'/>";
} 