
//-----------------------------------------------------------------------------
var maxCriterios = 5;
var maxCompetencia = 3;

//-----------------------------------------------------------------------------
function pressEnter(e)
{
	var event = new Event(e);

	switch (event.key) {
		case "enter":
			// Mover al siguiente input...
			if (this.nextInput) {
				var visible = !this.nextInput.master || !this.nextInput.master.hasClass("hidden");
				if (visible) this.nextInput.focus();
			}
			break;

		default:
			if (this.hasClass("criterio")) {
				var num = this.getParent().index + 1;
				if ((num <= maxCriterios) && (this.value.test("\\w", "i"))) {
					var nextEl = $("criterio" + num);
					if (nextEl && nextEl.hasClass("hidden")) {
						nextEl.setOpacity(0);
						nextEl.removeClass("hidden");
						nextEl.effect.custom(0, 1);
					}
				}
			}

			else 

			if (this.hasClass("competencia")) {
				var num = this.getParent().index + 1;
				if ((num <= maxCompetencia) && (this.value.test("\\w", "i"))) {
					var nextEl = $("competencia" + num);
					if (nextEl && nextEl.hasClass("hidden")) {
						nextEl.setOpacity(0);
						nextEl.removeClass("hidden");
						nextEl.effect.custom(0, 1);
					}
				}
			}
			break;
	}
}

//-----------------------------------------------------------------------------
function selectComp(e)
{
	var event = new Event(e);
	if (this.checked) {
		// Hacer aparecer los checks...
		$$("input.competencia").each(function(el){
			var m = el.master;
			if (m && m.hasClass("hidden") && ((m.index == 1) || el.value.test("\\w", "i"))  ) {
				m.setOpacity(0);
				m.removeClass("hidden");
				m.effect.custom(0, 1);
			}
		});
	} else {
		// hacer desaparecer los checks...
		$$("input.competencia").each(function(el){
			var m = el.master;
			if (m && !m.hasClass("hidden")) {
				m.effect.custom(1, 0).chain(function(){this.element.addClass("hidden");});
			}
		});
	}

	return true;
}

//-----------------------------------------------------------------------------
function activaError()
{
	var err = $("texto_error");
	err.effectSlide.slideIn();
	err.effectFade.start(0, 1);
}

//-----------------------------------------------------------------------------
function desactivaError()
{
	var err = $("texto_error");
	err.effectSlide.slideOut();
	err.effectFade.start(1, 0);
}

//-----------------------------------------------------------------------------
function habilitaSubmit()
{
	// Manejamos los botones. A todos los botones les metemos los
	// eventos mouseover/out para simular el :hover
	var submit = $("form_submit");
	submit.addEvent("mouseover", function(){this.addClass("hover");});
	submit.addEvent("mouseout",  function(){this.removeClass("hover");});
	submit.addEvent("click",	 doSubmit);

	submit.removeClass("disabled");
}

//-----------------------------------------------------------------------------
function deshabilitaSubmit()
{
	var submit = $("form_submit");
	submit.removeEvents();
	submit.addClass("disabled");
	submit.removeClass("hover");
}

//-----------------------------------------------------------------------------
function inicializaPagina()
{
	var prev = false;

	// Todos los campos de texto deben tener "pressEnter" como event...
	$$("input.texto").each(function(el){
		if (prev) prev.nextInput = el;
		el.onkeydown = pressEnter.bindAsEventListener(el);
		prev = el;
	});

	// Averiguamos los campos de criterios para añadirles el efecto.
	for (i=1; i<=maxCriterios; i++) {
		var el = $("criterio" + i);
		if (el) {
			el.index = i;
			el.effect = new Fx.Style( el.id, "opacity", {duration: 800, wait: false});
			$E("input", el).master = el;
		}
	}

	// Lo mismo con la competencia...
	for (i=1; i<=maxCompetencia; i++) {
		var el = $("competencia" + i);
		if (el) {
			el.index = i;
			el.effect = new Fx.Style( el.id, "opacity", {duration: 800, wait: false});
			$E("input", el).master = el;
		}
	}

	// Para el check de competencia, hacer que abra los inputs.
	var check_comp = $("input_comp0");
	if (check_comp) check_comp.onclick = selectComp.bindAsEventListener(check_comp);

	// Enlaces con rel=external, abrir en _blank
	var elems = $$("a");
	elems.each(function(e) {
			if (e.rel && (e.rel == "external")) {
				e.setAttribute("target", "_blank");
			}
		});

	// Para el manejo de errores.
	var elError = $("texto_error");
	if (elError) {
		elError.effectSlide = new Fx.Slide( elError.id, {duration: 200, wait: false});
		elError.effectFade  = new Fx.Style( elError.id, "opacity", {duration: 400, wait: false});

		elError.effectSlide.hide();
		elError.removeClass("hidden");
	}

	// Por último, habilitar el botón de envío.
	habilitaSubmit()

/*
	ajax = new Ajax('envio_datos.html', {
			method: 'get',
			onComplete: terminaDatos
		});
*/

	$("contenido").effectFade  = new Fx.Style( "contenido", "opacity", {duration: 600, wait: false});
}

//-----------------------------------------------------------------------------
function terminaDatos()
{
//	alert("Yep...");
}

//-----------------------------------------------------------------------------
function doSubmit()
{
	var esOk = true;
	var numCrit = 0;

	// Cogemos los campos marcados como requeridos y vamos comprobandolos
	$$("input.required").each(function(e){
			if (!e.value.length) {
				e.getParent().addClass("error");
				esOk = false;
			} else {
				e.getParent().removeClass("error");
			}
		});

	// Ahora comprobamos los criterios. Al menos tienen que rellenarnos uno.
	$$("input.criterio").each(function(e){
			if (e.value.trim().length) numCrit++;
			e.getParent().removeClass("error");
		});

	// Si no hay criterios, marcamos el primero como erroneo.
	if (!numCrit) {
		$("criterio1").addClass("error");
		esOk = false;
	}

	if (!esOk) {
		activaError();
		desactivaError.delay(4000);
		return false;
	}

	deshabilitaSubmit();
	$("contenido").effectFade.start(1, 0.3);

	// Enviar el formulario...
	$('formulario').action = "envio_datos.html";
	$('formulario').method = "post";
	$('formulario').submit();

	return false;
}




//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
Window.onDomReady( inicializaPagina );

