//-----------------------------------------------------------------------------
function vex_InitDocument()
{
	vex_InitForms();
}


//-----------------------------------------------------------------------------
function vex_InitForms()
{
	$$("form").each(function(el) {
		// Añadir la clase "hover" en los botones para simular el pseudoselector :hover
		$ES("button", el).addEvent( "mouseover", function() { this.addClass("hover"); } );
		$ES("button", el).addEvent( "mouseout",  function() { this.removeClass("hover"); } );

		// También a los "input" con .class "boton".
		$ES("input.boton", el).addEvent( "mouseover", function() { this.addClass("hover"); } );
		$ES("input.boton", el).addEvent( "mouseout",  function() { this.removeClass("hover"); } );

		el.addEvent("submit", submitForm);
	});

	// Caso especial... Cuando volvemos (history.back) los botones se quedan
	// inhabilitados. Esto los vuelve a habilitar...
	var btnEnviar = $E("input.envio");
	if (btnEnviar) {
		btnEnviar.removeClass("disabled");
		btnEnviar.disabled = false;
	}
}


//-----------------------------------------------------------------------------
function submitForm(e)
{
	var event = new Event(e);
	var todoOk = true;
	if (e.type != "submit") return;

	// Comprobamos los datos.
	var form_elems = $ES(".formfield", this);
	var form_focus = null;

	for (var i=0; i<form_elems.length; i++) {
		var elemOk = true;
		var input = $E("input", form_elems[i]);
		if (!input) input = $E("textarea", form_elems[i]);
		if (!input) input = $E("select", form_elems[i]);
		if (!input) continue;

		if (elemOk && form_elems[i].hasClass("required")) {
			if (input.tagName.toLowerCase() == "select") {
				elemOk = input.value.trim().length > 0;
			} else if (input.type == "checkbox") {
				elemOk = input.checked;
			} else {
				elemOk = input.value.trim().length > 0;
			}
		}

		if (elemOk && form_elems[i].hasClass("checkemail")) {
			var valid = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,8})+$/;
			elemOk = valid.test(input.value) || !input.value.trim().length;
		}

		if (elemOk && form_elems[i].hasClass("checkphone")) {
			var phone = input.value.replace(/[^\d]/g, "");
			elemOk = (phone.length == 9) || !input.value.trim().length;
		}

		if (elemOk) {
			form_elems[i].removeClass("error");
		} else {
			form_elems[i].addClass("error");
			todoOk = false;
			if (!form_focus) form_focus = input;
		}
	}
	if (!todoOk) {
		if (form_focus) { $(form_focus).focus(); }
		alert("Por favor, rellena correctamente los datos obligatorios.");
		event.stop();
	} else {
		var btnEnviar = $E("input.envio");
		if (btnEnviar) {
			btnEnviar.addClass("disabled");
			btnEnviar.disabled = "true";
			var divLoader = $("loader");
			divLoader.setStyle("visibility", "visible");
		}
	}
}


//=============================================================================
window.addEvent("domready", vex_InitDocument );
