/*
*	Archio: validadores.js
*	Desarrollador: Miguel Angel Silva Noriega
*	Fecha: 11-mar-2010
*	Descripción: Una coleccion de funciones de validacion de datos para interfaz de cliente. 
*				Los nombre de las funciones deberan ser: validar_<datos_que_validan>, por ejemplo: validar_email, valida_numero
*				Deberan reggresar true en caso de ser correcto, o false en caso de no serlo
*/

/*****************************************************************************
FUNCION:	validar_rfc
UTILIDAD:	valida la estructura de un RFC
ENTRADAS:
	rfc -> RFC a validar
SALIDAS:	true si el RFc tiene formato correcto; false si no
*****************************************************************************/
function validar_rfc(rfc) {
	ereg = /^[a-z\&]{3,4}[0-9]{2}(([0][1-9])|([1][0-2]))(([0-2][0-9])|([3][0-1]))[a-z0-9]{3}$/i;
	if ( ereg.test(rfc) ) {
		return (true);
	}
	return (false);
}

/*****************************************************************************
FUNCION:	validar_datos_rfc
UTILIDAD:	valida los datos necesarios para facturacion, incluyendo el RFC
ENTRADAS:	-- los datos obligatorios --
	rfc,nombre,calle,num_ext,colonia,ciudad,estado,cp
			(opcional) desplegar: indica si los errores tienen salida para naveador o como alert(default: alert)
						valores: js,html
SALIDAS:	cadena con los errores detectados, o cadena vacia en caso de ser todos correctos
*****************************************************************************/
function validar_datos_rfc(rfc,nombre,calle,num_ext,colonia,ciudad,estado,cp,desplegar) {
	if ( !desplegar ) {
		desplegar = 'js'
	}
	// inicializar la variable de retorno
	errores_datos = '';
	
	// validar el rfc
	if ( !validar_rfc(rfc) ) {
		errores_datos += '- RFC con formato incorrecto\n';
	}
	// validar el nombre
	if ( nombre == '' ) {
		errores_datos += '- El campo Nombre no debe estar vacío\n';
	}
	// validar el calle
	if ( calle == '' ) {
		errores_datos += '- El campo Calle no debe estar vacío\n';
	}
	// validar calle (no debe tener la palabra calle)	
	e_reg = /^(?!(calle\s))/i;
	if ( !e_reg.test(calle) ) {
		errores_datos += '- El campo Calle no debe contener la palabra "Calle"\n';
	}
	// validar numero exterior
	if ( num_ext == '' ) {
		errores_datos += '- El campo Número Exterior no debe estar vacío\n';
	}
	// validar colonia
	if ( colonia == '' ) {
		errores_datos += '- El campo Colonia no debe estar vacío\n';
	}
	// validar calle (no debe tener la palabra calle)
	e_reg = /^(?!(col\.)|colonia\s|(col\s))/i;
	if ( !e_reg.test(colonia) ) {
		errores_datos += '- El campo Colonia no debe contener la palabra "Col." o "Colonia"\n';
	}
	// validar ciudad
	if ( ciudad == '' ) {
		errores_datos += '- El campo Ciudad no debe estar vacío\n';
	}
	// validar estado
	if ( estado == '' ) {
		errores_datos += '- El campo Estado no debe estar vacío\n';
	}
	// validar CP
	if ( cp == '' ) {
		errores_datos += '- El campo C.P. no debe estar vacío\n';
	}
	// validar CP numerico
	if ( isNaN(cp) ) {
		errores_datos += '- El campo C.P. debe ser numérico\n';
	}
	
	// realizar el reemplazo de ser necesario
	if ( desplegar == 'html' ) {
		errores_datos = str_replace('\n','<br />',errores_datos); // saltos de linea
		errores_datos = str_replace('"','&quot;',errores_datos); // comillas
	}
	
	return (errores_datos);
}


function validar_datos_rfc_2(rfc,nombre,calle,num_ext,colonia,ciudad,estado,cp,desplegar) {
	if ( !desplegar ) {
		desplegar = 'js'
	}
	// inicializar la variable de retorno
	errores_datos = '';
	
	// validar el rfc	
	if ( !validar_rfc(rfc) ) {
		errores_datos += '- RFC con formato incorrecto\n';
	}
	// validar el nombre
	if ( nombre == '' ) {
		errores_datos += '- El campo Nombre no debe estar vacío\n';
	}
	// validar el calle
	if ( calle == '' ) {
		errores_datos += '- El campo Calle no debe estar vacío\n';
	}
	// validar calle (no debe tener la palabra calle)
	var e_reg = /^calle(\s|\.|$)/i; //calle
	if ( e_reg.test(calle) ) {
		errores_datos += '- El campo Calle no debe contener la palabra "Calle o Calle."\n';
	}
	// validar numero exterior
	if ( num_ext == '' ) {
		errores_datos += '- El campo Número Exterior no debe estar vacío\n';
	}
	// validar colonia
	if ( colonia == '' ) {
		errores_datos += '- El campo Colonia no debe estar vacío\n';
	}
	// validar colonia (no debe tener la palabra colonia o col o col.)
	var e_reg = /^col(\s|\.|onia(\s|\.|$)|$)/i;
	if ( e_reg.test(colonia) ) {
		errores_datos += '- El campo Colonia no debe contener la palabra "Col." o "Colonia"\n';
	}
	// validar ciudad
	if ( ciudad == '' ) {
		errores_datos += '- El campo Ciudad no debe estar vacío\n';
	}
	// validar estado
	if ( estado == '' ) {
		errores_datos += '- El campo Estado no debe estar vacío\n';
	}
	// validar CP
	if ( cp == '' ) {
		errores_datos += '- El campo C.P. no debe estar vacío\n';
	}
	// validar CP numerico
	if ( isNaN(cp) ) {
		errores_datos += '- El campo C.P. debe ser numérico\n';
	}
	
	// realizar el reemplazo de ser necesario
	if ( desplegar == 'html' ) {		
		errores_datos = str_replace('\n','<br />',errores_datos); // saltos de linea
		errores_datos = str_replace('"','&quot;',errores_datos); // comillas
	}
	
	return (errores_datos);
}

/*************************************************************************************
FUNCIÓN: valida email
DESCRIPCION: valida que sea un e-mail correcto
ENTRADAS: 
	$email		=	Email a validar
SALIDAS
	Falso o verdadero
*************************************************************************************/
function validar_email(email){
	ereg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
	if ( ereg.test(email) == true ) {
		return true;
	}
	return false;
}
