// funcion principal
// formObject: el objeto del formulario
// config: objeto con los parámetros {campo:tipo}
//    ej: { name:'', mailaddr:'email', etc}
//   donde campo es el name del objeto del formulario, y tipo el tipo de validador empelado
//   tipos de validadores:
//    - '': sólo verifica que el campo no esté vacío
//    - 'email': verifica que el campo sea una dirección de email válida
// retorna: array de resultados del estilo: { "tipo_validador:resultado" }
  
function validateForm( formObject, config ) {
	var results = new Array();
	for( var field in config )
	{
		var ptype = config[field];
		var result = validateFormObject( formObject, field, ptype );
		results[results.length] = ptype + ':' + result;
	}
	return results;
}

// retorna el valor interno de un elemento de formulario (el mismo que en el $_POST[])
function getFormObjectValue( element ) {
	// combobox
	if (element.options)
	{
		return element.options[element.selectedIndex];
	}
	return element.value;
}

function validateFormObject( formObject, field, ptype )
{
	var e = formObject[field];
	var val = getFormObjectValue( e );
	
	if ( !e )
	{
		return true;
	}
	var result;
	switch( ptype )
	{
		case 'email':
			result = isValidEmail( val );
			break;
		default:
			result = val.length != 0;
	
	}
	return result;
}


// validadores

function isValidEmail(pValue)
{
	var x = pValue;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if ( filter.test( x ) )
	{
		return true;
	}
	return false;
}
