/*
Necesitamos:
	funciones js:
	-montar elemento

	css:
	-las clases de_XXXXXX

Funcionamiento
	//Creamos la capa.
	var capa_form = new dialogo_emergente();

	//Todas las funciones poner_tal añaden cosas al formulario (espacios o inputs, de momento)...
	capa_form.poner_linea_espacio();
	capa_form.poner_campo(null, 'oculto', 'contacto_id', null, id);
	capa_form.poner_campo('Nombre:', 'texto', 'contacto_nombre', null, null);
	capa_form.poner_campo('Tel&eacute;fono', 'texto', 'contacto_telefono', null, null);
	capa_form.poner_campo('Email', 'texto', 'contacto_email', null, null);
	capa_form.poner_campo('Texto', 'area_texto', 'contacto_texto', null, null);
	capa_form.poner_linea_espacio();
	capa_form.poner_checkbox('Acepto las <a href="condiciones.php" target="_blank">condiciones de contacto</a>', 'contacto_acepto', 's', null);
	capa_form.poner_linea_espacio();

	//Al poner los campos seteamos los botones.
	capa_form.establecer_boton_aceptar('Enviar', null, function(){enviar_contacto(capa_form)});
	capa_form.establecer_boton_cancelar('Cancelar', null, null);

	//Finalmente lo hacemos aparecer.
	capa_form.activar();
*/

function dialogo_emergente()
{
	this.capa_bloqueo=null;	//La capa que bloqueará todo.
	this.capa_formulario=null;	//La capa que hará de formulario.
	this.boton_aceptar=null;	//Los botones... Van aparte porque deben "existir" antes de ser creados.
	this.boton_cancelar=null;
	this.campos=new Array();	//Array de titulos e inputs (campos[0][0] titulo, campos[0][1] input, campos[1][0] titulo....).

	var aquello=this;

	//Encender...
	this.activar=function()
	{
		//Montar la capa de bloqueo.
		aquello.capa_bloqueo=montar_elemento('div', 'de_capa_bloqueo', null);
		document.body.appendChild(aquello.capa_bloqueo);

		//Montar la capa de formulario.
		aquello.capa_formulario=montar_elemento('div', 'de_capa_formulario', null);
		document.body.appendChild(aquello.capa_formulario);

		//Poner los campos.
		aquello.montar_campos_formulario();

		//Montar los botones.
		aquello.montar_botones_formulario();
	}

	//Recorrer el array y montar... 
	this.montar_campos_formulario=function()
	{
		var i=0;
		var contenedor=aquello.capa_formulario;
	
		for(i in aquello.campos)
		{
			var linea=montar_elemento('div', 'de_linea_formulario', null);
			
			if(aquello.campos[i][0])
			{
				linea.appendChild(aquello.campos[i][0]); //Ponemos la capa titulo.
			}
			
			if(aquello.campos[i][1])
			{
				linea.appendChild(aquello.campos[i][1]); //Ponemos la capa texto.
			}
			
			linea.appendChild(montar_elemento('div', 'clear', null)); //Ponemos la capa clear.
			contenedor.appendChild(linea);
		}		
	
	}
	//Poner los botones...
	this.montar_botones_formulario=function()
	{
		if(!aquello.boton_aceptar || !aquello.boton_cancelar)
		{
			alert('DE_ERROR: Botones no establecidtos');
		}
		else
		{
			var linea=montar_elemento('div', 'de_linea_formulario', null);
			linea.appendChild(aquello.boton_cancelar);
			linea.appendChild(aquello.boton_aceptar);
			
			aquello.capa_formulario.appendChild(linea);
		}		
	}

	//Apagar y eliminar...
	this.desactivar=function()
	{
		//Lo destruyo todo, poniendo los onclick en null...
		//TODO
		//TODO
		//TODO		
		
		aquello.capa_bloqueo.parentNode.removeChild(aquello.capa_bloqueo);
		aquello.capa_formulario.parentNode.removeChild(aquello.capa_formulario);
	}

	//Crear un campo.
	this.poner_campo=function(titulo, tipo, nombre, clase, valor)
	{
		//Creamos el titulo y el input y lo metemos en el array.
		aquello.campos.push( new Array(crear_titulo(titulo) , crear_input(tipo, nombre, clase, valor) ) );
	}

	this.poner_checkbox=function(texto, nombre, valor, clase)
	{
		//Creamos el titulo y el checkbox y lo metemos en el array.
		aquello.campos.push( new Array(crear_titulo('&nbsp;') , crear_checkbox(texto, nombre, valor, clase) ) );
	}

	this.poner_linea_espacio=function()
	{
		aquello.campos.push( new Array(crear_linea_espacio()) );
	}

	//Establecer los botones...
	this.establecer_boton_aceptar=function(texto, clase, funcion)
	{
		//Creamos...
		aquello.boton_aceptar=document.createElement('input');

		//Asignamos...
		aquello.boton_aceptar.value=texto;

		if(clase) aquello.boton_aceptar.className=clase;
		else aquello.boton_aceptar.className='de_btn_enviar';

		if(funcion) 
		{
			aquello.boton_aceptar.onclick=function(){funcion()};
		}
		else 
		{
			alert('DE_ERROR: Funcion aceptar incorrecta');				
		}
	}

	this.establecer_boton_cancelar=function(texto, clase, funcion)
	{
		//Creamos...
		aquello.boton_cancelar=document.createElement('input');

		//Asignamos...
		aquello.boton_cancelar.value=texto;

		if(clase) aquello.boton_cancelar.className=clase;
		else aquello.boton_cancelar.className='de_btn_cancelar';

		if(funcion==null)
		{
			aquello.boton_cancelar.onclick=function(){aquello.desactivar()};
		}
		else
		{
			aquello.boton_cancelar.onclick=function(){funcion()};
		}
	}

	//////////////////////
	//Funciones privadas//
	//////////////////////

	function crear_linea_espacio()
	{
		var campo=montar_elemento('div', 'de_linea_espacio', null);
		return campo;
	}

	//Devuelve una capa con el titulo...
	function crear_titulo(titulo)
	{
		var campo=montar_elemento('div', 'de_campo1', titulo);
		return campo;
	}

	//Devuelve una capa con el input que sea....
	function crear_input(tipo, nombre, clase, valor)
	{
		var campo=montar_elemento('div', 'de_campo2', null);
		var elemento_input=null;

		switch(tipo)
		{
			case 'oculto':
				elemento_input=document.createElement('input');
				elemento_input.type='hidden';
			break;

			case 'texto': 
				elemento_input=document.createElement('input');
				elemento_input.type='text';
				if(!clase) elemento_input.className='de_campo_texto';
			break;

			case 'area_texto':
				elemento_input=document.createElement('textarea');
				if(!clase) elemento_input.className='de_campo_texto';
			break;

			case 'checkbox':
				elemento_input=document.createElement('input');
				elemento_input.type='checkbox';
				if(!clase) elemento_input.className='de_check';
			break;

			default: alert('DE_ERROR: Elemento no reconocido');
		}

		if(elemento_input)
		{
			elemento_input.name=nombre;
			elemento_input.id=nombre;
			if(clase)elemento_input.className='clase';
			if(valor) elemento_input.value=valor;
			campo.appendChild(elemento_input);
		}
		
		return campo;
	}

	//Idem pero para checkboxes de una linea completa...
	function crear_checkbox(contenido, nombre, valor, clase)
	{
		var campo=montar_elemento('div', 'de_campo2', null);
		
		var elemento_label=document.createElement('label');
		elemento_label.htmlFor=nombre;
		elemento_label.innerHTML=contenido;

		var elemento_input=document.createElement('input');
		if(!clase) elemento_input.className='de_check';
		if(valor) elemento_input.value=valor;

		elemento_input.type='checkbox';
		elemento_input.name=nombre;
		elemento_input.id=nombre;

		campo.appendChild(elemento_input);
		campo.appendChild(elemento_label);

		return campo;
	}
}

