arregloEspecialidades = new Array();
empezar = 1;

function createElementWithName(tipo, nombre) {
	var elemento;
	// First try the IE way; if this fails then use the standard way
	if (document.all) {
		elemento = document.createElement('<'+tipo+' name="'+nombre+'" />');
	} else {
		elemento = document.createElement(tipo);
		elemento.setAttribute('name', nombre);
	}
	return elemento;
}

function nuevas_especialidades(elObjeto) {
	viejasEspecialidades = new Array();
	objeto = document.getElementById(elObjeto);
	campo = objeto.previousSibling.previousSibling;
	// si el campo es vacío no inserto nada
	if(campo.value == "") alert('El campo está vacío');
	else {
		existe_enCaja = indice(arregloEspecialidades,campo.value);
		opciones = document.getElementById('lista').options;
		for(e=0; e<opciones.length; e++) {
			viejasEspecialidades[e] = opciones[e].text;
		}
		existe_enSelect = indice(viejasEspecialidades,campo.value);
		if(!isNaN(existe_enCaja)) {
			alert('La especialiad ya está en la caja, entre una nueva');
		}
		else {// si empezar es 1 debo crear la tabla, de lo contrario significa que la tabla ya está creada

			if(!isNaN(existe_enSelect)) {
				alert('La especialidad ya existe en la base de datos, verifique en la lista superior!');
			}
			else {
				if(empezar == 1) {
					// creo la tabla
					var tabla = document.createElement("table");
						tabla.setAttribute("class","tabEspecialidades");
						tabla.setAttribute("className","tabEspecialidades");
						tabla.setAttribute("align","center");
					
					// creo la cabecera de la tabla con su titulo
					var tablaHead = document.createElement("thead");
					var filaTitulo = document.createElement("tr");
					var titulo = document.createElement("td");
					var textoTitulo = document.createTextNode("Nuevas Especialidades");
						titulo.appendChild(textoTitulo);
						titulo.setAttribute("colSpan","2");
						filaTitulo.appendChild(titulo);
						tablaHead.appendChild(filaTitulo);
						tabla.appendChild(tablaHead);
					
					// creo el cuerpo de la tabla vacio
					var tablaBody = document.createElement("tbody");
						tabla.appendChild(tablaBody);
					
					// obtengo el lugar donde quiero incertar la tabla
					siguiente = objeto.nextSibling;
					contenedor = objeto.parentNode;
					contenedor.insertBefore(tabla,siguiente);
					empezar = 0;
				}
				else {
					// si la tabla ya esta creada obtengo el cuerpo
					tablaBody = objeto.nextSibling.firstChild.nextSibling;
				}
				// creo la fila con la celda que contendrá la especialidad y la que contendrá las acciones
				var fila = document.createElement("tr");
				var celda = document.createElement("td");
				var celda2 = document.createElement("td");
					fila.appendChild(celda);
					fila.appendChild(celda2);
				
				// creo el parrafo para la especialidad
				var parrafoEspecialidad = document.createElement("p");
				var especialidad = document.createTextNode(campo.value);
					// pongo el nuevo valor de especialidad en el array contenedor
					arregloEspecialidades.push(campo.value);
		
					parrafoEspecialidad.appendChild(especialidad);
				
				// creo el campo de edición de la especiliadad
				var inputEspecialidad = document.createElement("input");
					inputEspecialidad.setAttribute("value",parrafoEspecialidad.innerHTML);
					inputEspecialidad.setAttribute("type","text");
					inputEspecialidad.setAttribute("name","espNuevas["+parrafoEspecialidad.innerHTML+"]");
					inputEspecialidad.style.display = "none";
					//inputEspecialidad.onblur = terminarModificarEspecialidad;
				
				// creo las acciones quitar y modificar
				var quitar = createElementWithName("a","quitar");
					quitar.setAttribute("href","javascript:void(0)");
					
				var modificar = createElementWithName("a","modificar");
					modificar.setAttribute("href","javascript:void(0)");
					
				var vinculoQuitar = document.createTextNode("Quitar");
				var separador = document.createTextNode(" | ");
				var vinculoModificar = document.createTextNode("Modificar");
					quitar.appendChild(vinculoQuitar);
					modificar.appendChild(vinculoModificar);
					
					fila.lastChild.appendChild(quitar);
					fila.lastChild.appendChild(separador);
					fila.lastChild.appendChild(modificar);
						fila.lastChild.style.width = "40%";
						fila.lastChild.style.textAlign = "right";
					fila.firstChild.appendChild(parrafoEspecialidad);
					fila.firstChild.appendChild(inputEspecialidad);
				tablaBody.insertBefore(fila,tablaBody.firstChild);
				objeto.previousSibling.previousSibling.value = "";
				objeto.previousSibling.previousSibling.focus();
			}
		}
	}
	manejarTabla();
}

function indice(array,valor) {
	// debe recorrer el array comparando todos sus elementos con valor, cuando encuentra coincidencia devuelve el indice
	elementos = array.length;
	//alert(elementos);
	for(i=0; i<elementos; i++) {
		if(array[i].toLowerCase() == valor.toLowerCase()) {
			//alert('El indice del valor '+array[i]+' es '+i);
			return i;
		}
	}
}

function borrarEspecialidad(objeto) {
	cantidadElementos = arregloEspecialidades.length;

	// obtengo el elemento a eliminar que es toda la fila
	if(cantidadElementos == 1) {
		eliminar = this.parentNode.parentNode.parentNode.parentNode;
		this.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(eliminar);
		empezar = 1;
	}
	else {
		eliminar = this.parentNode.parentNode;		
		this.parentNode.parentNode.parentNode.removeChild(eliminar);
	}
	parrafo = eliminar.firstChild.firstChild.innerHTML;

	elIndice = indice("arregloEspecialidades",parrafo)

	arregloEspecialidades.splice(elIndice,1);

}

function modificarEspecialidad() {
	elTexto = this.parentNode.parentNode.firstChild.firstChild;
	elCampo = this.parentNode.parentNode.firstChild.lastChild;
	elTexto.style.display = "none";
	elCampo.style.display = "block";
	elCampo.focus();
}

function terminarModificarEspecialidad() {
	elTexto = this.previousSibling;
	elCampo = this;
	elTexto.innerHTML = elCampo.value;
	this.name = "espNuevas["+elCampo.value+"]";
	elTexto.style.display = "block";
	elCampo.style.display = "none";
}

function inicializar_ingreso() {
	// boton "Agregar Especialidad"
	var agregar = document.getElementById('agregar');
	// campo "Nueva Especialidad"
	var campoAgregar = document.getElementById('campo_agregar');
	// formulario en si
	var formulario = document.getElementById('frm_alta');
	// boton submit del formulario
	var boton_submit = document.getElementById('btn_submit');
	
	// si hago click en el boton "Agregar Especialidad" Agrega la especialidad a la tabla
	agregar.onclick = function() { nuevas_especialidades("agregar"); }

	campoAgregar.onkeypress = function(elEvento) {
		var evento = window.event || elEvento;
		if(evento.keyCode == 13) {
			nuevas_especialidades("agregar");
			return false;
		}
	}
}

function manejarTabla() {
	vinculos = document.getElementsByTagName('a');
	nomQuitar = "quitar";
	nomModificar = "modificar";
	
	for(k=0; k<vinculos.length; k++) {
		if(vinculos[k].name == nomQuitar) {
			vinculos[k].onclick = borrarEspecialidad;
		}
		else {
			if(vinculos[k].name == nomModificar) {
				vinculos[k].onclick = modificarEspecialidad;
			}
		}
	}

	campos = document.getElementsByTagName('input');
	nombre = new RegExp("^espNuevas","i");
	//alert(campos.length);
	for(j=0; j<campos.length; j++) {
		if(nombre.test(campos[j].name)) {
			campos[j].onblur = terminarModificarEspecialidad;
		}
	}
}

window.onload = function() {
	try {
		inicializar_ingreso();
		inicializarCheck();
		inicializarTabular();
		enviar_form = document.getElementById('btn_submit');
		//alert(enviar_form);
	}
	catch(e) {}
}
