// (c) Jose Sanchez Moreno - Oxigenow E-Solutions
// www.oxigenow.com

var campoRojo = "";	// En esta variable almacenamos el campo que actualmente est? rojo.
// Comprueba que todos los campos que se le pasan como par?metros.

function form(formulario) {
	// Expresiones regulares para controlar los valores del formulario.
	var f = formulario;
	var re_numerico = /^\d*$/;
	var re_float = /^\d*(\.\d*)?$/;
	var re_telefono = /^[\d\s]*$/;
	var re_fecha    = /^(\d{1,2})\/(\d{1,2})\/(\d{2,4})$|^$/;
	var re_email 	 = /^[\w\-\_\.\d]+@[\w\-\_\.\d]+\.[\w\-\_\.\d]+$|^$/;
	var re_image = /(\.(gif|jpg)|^)$/i;
	var fechas = new Array();
	var valido = true;

	for(var i = 0; i < f.elements.length; i++) {
	 	var campo = f.elements[i];	 	
		check = campo.getAttribute("CHECKS");
		if(!check) check = campo.getAttribute("ID");
		if(check != null) 
		{		
		 	if (check.indexOf("not null") > -1) { valido = campo.value != ""; msg = "Debe introducir un valor para el campo."; }
			if (check.indexOf("number") > -1)	{ valido = valido & re_numerico.test(campo.value); msg = "El valor del campo debe ser num?rico.";}
			if (check.indexOf("email") > -1)	{ valido = valido & re_email.test(campo.value); msg = "No es un formato de e-mail.";}
		 	if (check.indexOf("date") > -1)		{ fechas.push(campo); valido = valido & re_fecha.test(campo.value); msg = "El formato de fecha no es v?lido\nEl formato correcto es dd/mm/yy.";}
		 	if (check.indexOf("float")  > -1)   { valido = valido & re_float.test(campo.value); msg = "El campo es un campo num?rico con decimales. Debe expresarlo de la forma 123.45";}
		 	if (check.indexOf("image")  > -1)   { valido = valido & re_image.test(campo.value); msg = "El fichero debe ser una imagen en jpg o gif.";}
		 	if (check.indexOf("time")  > -1)   { time_blur(campo); }		 	
		}
		 	/*if (func == "telefono") 	{ valido = re_telefono.test(campo.value);	}*/
	 	if (!valido) {
			alert(msg);
			setFocus(campo);
			return false;
	 	}

	}
	for(var i = 0; i < fechas.length; i++) {
		if(re_fecha.exec(fechas[i].value) && fechas[i].value != "") {
			fechas[i].value = RegExp.$3 + "-" + RegExp.$2 + "-" + RegExp.$1;
		}
	}
	return true;
}
function setFocus(campo) {
	campo.style.borderColor="red";
	campo.style.borderWidth="2px";
	campo.style.borderStyle="dashed";
	campoRojo = campo;
	campo.focus();
}

function quitarRojo() {
	if(campoRojo) {
		campoRojo.style.borderColor="";
		campoRojo.style.borderStyle="inset";
		campoRojo ="";
		//if(typeof(cerrarMensaje) == "function") { cerrarMensaje(); }

	}
}

function verTecla(e) {
	if(window.event) {
		if(window.event.srcElement == campoRojo) quitarRojo();
	} else {
		if(e.target == campoRojo) quitarRojo();
	}
}

function file_edit(id)
{	
	document.getElementById("file_editar_" + id).style.visibility = "hidden";
	document.getElementById("file_descripcion_" + id).innerHTML = "<input type='text' name='file_descripcion_" + id + "' value='" + document.getElementById("file_descripcion_" + id).innerHTML + "'>";	
}



function is_time_ok(value)
{
	var re_hora    = /^(\d{1,2}):(\d{2})(:\d{2})?$|^$/;
	if(re_hora.exec(value))
	{	
		if((RegExp.$1 >=0 && RegExp.$1 < 24) && (RegExp.$2 >=0 && RegExp.$2 < 60))
		{
		//	if(RegExp.$3 && (RegExp.$3 >=0 && RegExp.$3 < 60)) return true;
			return true;		
		}
	}
	return false;
	
}

function time_blur(hora)
{
		if(hora.value.length > 4)
			hora_value = hora.value.replace(/(\d{2})(\d{2})$/, ":$1:$2");
		else 
			hora_value = hora.value.replace(/(\d{2})$/, ":$1");

		// Ahora comprobamos la hora.		
		if(is_time_ok(hora_value))  {
			hora.value = hora_value;		
		} else {	
			alert("El formato de la hora no es correcta");
			setFocus(hora);
			return false;
		}
		return true;
}
function time_focus(hora)
{
		hora.value = hora.value.replace(/:/g, "");		
		hora.select();
}

document.onkeydown = verTecla;
