//**************************************************************************************************
//										validación de formas
//**************************************************************************************************
//valida que el string recibido posea la forma de una dirección de correo
function expCorreo(mail)
{
	var filter = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
	if (filter.test(mail))
	{
		return(true)
	}
	else
	{
		return(false)
	}
}

//valida un campo con direcciones de correo múltiples
function validaCorreos(obj)
{	
	correos = obj.value;
	//elimina ; repetidos, y si están al principio o al final de la cadena
	re = /;+/g;
	correos = correos.replace(re,";");
	
	var primer = correos.substring(0,1)
	if (primer == ";")
		correos = correos.substring(1,correos.length)
	
	var ultimo = correos.substring(correos.length-1,correos.length)
	if (ultimo == ";")
		correos = correos.substring(0,correos.length-1)
	
	obj.value= correos;
	if (TrimJS(correos) != '')
	{
		correos = correos.split(";")
		for (x=0;x<correos.length;x++)
		{
			if (!expCorreo(correos[x]))
			{
				alert('Alguna de las direcciones de correo no es válida.')
				obj.focus();
				return(false)
			}
		}
		return(true)
	}
	else
	{
		alert('Debes proporcionar por lo menos una dirección de correo.')
		obj.focus();
		return(false)
	}
}

//valida un campo con una dirección de correo
function validaCorreo(obj,opcional)
{
	mail = TrimJS(obj.value);
	obj.value = mail;
	if (mail == '')
	{
		if (opcional == 1)
		{
			obj.value = '';
			return(true);
		}
		else
		{
			alert('Debes introducir una dirección de correo.');
			obj.focus();
			return (false)
		}
	}

	if (expCorreo(mail))
	{
		return(true);
	}
	else
	{
		alert('Debes introducir una dirección de correo válida.');
		obj.focus();
		return (false);
	}
}

//valida que un campo haya sido llenado
function FilledIn(obj,mensaje)
{

	cadena = obj.value;
	r = TrimJS(cadena)
	if (r != '')
	{
		return(true);
	}
	else
	{
		alert(mensaje)
		obj.focus();
		return(false);
	}
}

//valida que un campo haya sido llenado con un valor numérico
function FilledInNumeric(obj,mensaje)
{


	cadena = obj.value;
	r = TrimJS(cadena)
	if (r != '')
		if (isNaN(r))
		{
			alert(mensaje)
			obj.focus();
			return(false);
		}
		else
			return(true);
	else
	{
		alert(mensaje)
		obj.focus();
		return(false);
	}
}


//verifica que una fecha sea válida
function IsDate(fecha,formato,objDia,objMes) 
{
	switch(formato)
	{
		case 1://dd/mm/aa
			strFormato = "dd/mm/aa";
			intIndMes = 3;
			intIndDia = 1;
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2})$/;
			break;
		case 2://dd/mm/aaaa
			strFormato = "dd/mm/aaaa";
			intIndMes = 3;
			intIndDia = 1;
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
			break;
		case 3://mm/dd/aa
			strFormato = "mm/dd/aa";
			intIndMes = 1;
			intIndDia = 3;
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2})$/;
			break;
		case 4://mm/dd/aaaa
			strFormato = "mm/dd/aaaa";
			intIndMes = 1;
			intIndDia = 3;
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
			break;
	}

	var matchArray = fecha.match(datePat);

    if (matchArray == null) {
        alert("El formato de la fecha debe ser " + strFormato + ".");
        return false;
    }

    month = matchArray[intIndMes];
    day = matchArray[intIndDia];
    year = matchArray[5];
	

    if (month < 1 || month > 12) { // check month range
        alert("El número de mes debe estar entre 1 and 12.");
		objMes.focus();
        return false;
    }

    if (day < 1 || day > 31) {
        alert("El número de día debe estar entre 1 and 31.");
		if (objDia) objDia.focus();
        return false;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        alert("El mes "+month+" no tiene 31 días.")
		if (objMes) objMes.focus();
        return false;
    }

    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            alert("Febrero del " + year + " no tiene " + day + " días.");
			objDia.focus();
            return false;
        }
    }
    return true; // date is valid
}

//valida que un campo haya sido seleccionado
function Selected(obj,mensaje)
{
	cadena = obj.value;
	r = TrimJS(cadena)
	if (r != '')
	{
		return(true);
	}
	else
	{
		alert(mensaje)
		return(false);
	}
}

//elimina espacios en blanco
function TrimJS(cadena)
{
	re = / /g;
	r = cadena.replace(re,"");
	return(r)
}

//valida que se haya seleccionado un elemento de un combo, el valor sin seleccionar es 0
function SelectedCbo(obj, mensaje)
{
	valor = obj.value;
	if (valor != 0)
		return(true);
	else
	{
		alert(mensaje)
		obj.focus();
		return(false);
	}
}