/*quitar para depurar*/
//window.onerror=handle_error;
/*quitar para depurar*/
function handle_error(){
	return true;
}
function js_trim(ps_cadena){
//Quita los espacios al inicio y al final de una cadena (ps_cadena)
	return(ps_cadena.replace(/(^\s+)|(\s+$)/g,""));
}
function is_valid_dni(ps_dni){
//compreuba que hay 8 dígitos segidos de una letra
	ps_dni=js_trim(ps_dni);
	return /^\d{8}[a-z]{1}$/i.test(ps_dni);
}
function is_valid_email(ps_email){
//compreuba que la cadena (ps_email) es un email válido
	ps_email=js_trim(ps_email);
	return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(ps_email);
}
function is_valid_date(ps_date){
//compreuba que la cadena (ps_date) es un date válido
	ps_date=js_trim(ps_date);
	return /^(\d{1,2})\/(\d{1,2})\/(\d{4}|\d{2})$/.test(ps_date);
}
function to_js_date(ps_date){
//cambia meses por días en un string con separador "/"
	if (!is_valid_date(ps_date)) return null
	ps_date=ps_date.split("/");
	return new Date(ps_date[1] +"/"+ ps_date[0] +"/"+  ps_date[2]);
}
function init_form(po_form){		
//pone el foco en el primer campo del formulario
	po_form.elements[0].focus();	
	if (po_form.elements[0].type=="text")
		po_form.elements[0].select();		
}
function test_empty_fields(po_form,ps_err_msg){	
//Si todos los campos están vacíos muestra un mensaje
	with (po_form) {
		for(var i=0;i<elements.length;i++){
			if (elements[i].type=="text"){
				if (js_trim(elements[i].value)!="") return true;
			}
			if (elements[i].type=="select-one"){
				if (elements[i].selectedIndex>1) return true;
			}
		}
		if (ps_err_msg) alert(ps_err_msg);
		init_form(po_form);
		return false;
	}
}
function select_field(po_field){
//selecciona el campo que se le pasa como parámetro
	if (po_field.select) po_field.select();
	else if (po_field.focus) po_field.focus();
}
function js_to_number(ps_number){
//quita los puntos de separaión de miles y transfotma la coma en punto
	return parseFloat(ps_number.replace(/\./g,"").replace(/\,/g,"."));
}
function validate_field(pb_is_valid,po_field,pb_required,ps_err_msg){
	if (!pb_required && !js_trim(po_field.value)) return true;
	if (!pb_is_valid){
		if (ps_err_msg) alert(ps_err_msg);
		select_field(po_field);
		return false;
	}
	return true;
}
//parámetro pb_required:	si es verdadero --> no permite que se deje vacío, lo valida siempre.
//							si es falso		--> sólo lo valida si no está vacío.
function validate_email(po_field,pb_required,ps_err_msg){
//valida un campo Email. Si el email es erroneo y ps_err_msg es un string válido, muestra el mensaje de error y pone el foco en el campo
	return validate_field(is_valid_email(po_field.value),po_field,pb_required,ps_err_msg);
}
function validate_dni(po_field,pb_required,ps_err_msg){
//valida un campo dni. Si el dni es erroneo y ps_err_msg es un string válido, muestra el mensaje de error y pone el foco en el campo
	return validate_field(is_valid_dni(po_field.value),po_field,pb_required,ps_err_msg);
}
function validate_string(po_field,pb_required,ps_err_msg){
//valida un campo de texto. Si está vacío y ps_err_msg es un string válido, muestra el mensaje de error y pone el foco en el campo
	return validate_field((js_trim(po_field.value)!=""),po_field,pb_required,ps_err_msg);
}
function validate_date(po_field,pb_required,ps_err_msg){
//valida un campo fecha. Si no tiene el formato correcto y ps_err_msg es un string válido, muestra el mensaje de error y pone el foco en el campo
	return validate_field(is_valid_date(po_field.value),po_field,pb_required,ps_err_msg);
}
function is_greater_date(po_1,po_2,pb_required,ps_err_msg1,ps_err_msg2){
	if (!validate_date(po_1,pb_required,ps_err_msg1)) return false;
	if (!validate_date(po_2,pb_required,ps_err_msg1)) return false;
	return validate_field((to_js_date(po_1.value)>to_js_date(po_2.value) || !po_1.value || !po_2.value),po_1,true,ps_err_msg2);
}

function is_greater_equal_date(po_1,po_2,pb_required,ps_err_msg1,ps_err_msg2){
	if (!validate_date(po_1,pb_required,ps_err_msg1)) return false;
	if (!validate_date(po_2,pb_required,ps_err_msg1)) return false;
	return validate_field((to_js_date(po_1.value)>=to_js_date(po_2.value) || !po_1.value || !po_2.value),po_1,true,ps_err_msg2);
}

function validate_password(po_field1,po_field2,pn_min_length,ps_msg_different,ps_msg_length){
	var ps_field1=js_trim(po_field1.value);
	var ps_field2=js_trim(po_field2.value);
	if (!validate_field((ps_field1.length>=pn_min_length),po_field1,true,ps_msg_length)) return false;
	if (!validate_field((ps_field1==ps_field2),po_field1,true,ps_msg_different)) return false;
	return true;
}
window.onresize = resize;
function resize()
{
//alert("resize event detected!");
 init_page();
}
