/* *****************************************
Validacion de formularios
=========================

1) - Incluir antes del tag <form> el JS:
<script type="text/javascript" language="javascript" src="/dashew/scripts/validation.js"></script>

2) - Luego declarar los campos que son requeridos, con los siguientes datos:
<script language="javascript" type="text/javascript">   
<!--
define('txtURL', 'string', 'URL');
-->
</script>
---------------------------
define(CAMPO, TIPO, DESCRIPCION);

CAMPO 			-> ID del campo requerido
TIPO			-> Tipo de dato a verificar, pueden ser "string", "number", "date", "select" o "email"
DESCRIPCION		-> Nombre de referencia al campo o etiqueta descriptiva.

3) - Agregar el evento al formulario
<form ....... onsubmit="return submitForm();">


Otras configuraciones:
======================
var Adv_Color	-> Color de fondo resaltado cuando se produzca un error

***************************************** */
var Adv_Color = "#FFCEB5";

var controls = new Array();
var E_obj = new Array();
var E_title = "Se encontraron los siguientes errores: \n\n";
var E_field = " - El campo \"";
var E_require = "\" es obligatorio y ";
var E_cad = E_title;
var flag = true;

var E_bgcolors = new Array();

function submitForm(){
	for(i=0;i<controls.length;i++){
		var color = document.getElementById(controls[i]['obj']).style['backgroundColor'];
		E_bgcolors[i] = color;
	}
	if(validate()){
		return true;
	}else{
		return false;
	}
}
function define(obj,tipo,nombre){
	var p = controls.length;
	controls[p] = new Array();
	controls[p]['obj'] = obj;
	controls[p]['tipo'] = tipo;
	controls[p]['nombre'] = nombre;
}
function validate(){
	init();
	if(controls.length == 0) return true;
	for(i=0;i<controls.length;i++){
		switch(controls[i]['tipo']){
			case "string":
				if(!is_string(i)) error(i);
				break;
			case "number":
				if(!is_number(i)) error(i);
				break;
			case "email":
				if(!is_email(i)) error(i);
				break;
			case "date":
				if(!is_date(i)) error(i);
				break;
			case "select":
				if(!is_select(i)) error(i);
				break;
		}
		document.getElementById(controls[i]['obj']).style['backgroundColor'] = '';
	}
	if(!flag){
		alert(E_cad);
		document.getElementById(E_obj[0]).focus();
		document.getElementById(E_obj[0]).style['backgroundColor'] = Adv_Color;
	}
	return flag;
}
function error(pos){
	E_cad += E_field + controls[pos]['nombre'] + E_require;
	E_obj[E_obj.length] = controls[pos]['obj'];
	flag = false;
	switch(controls[pos]['tipo']){
		case "string":
			E_cad += "debe contener valores alfanuméricos.\n";
			break;
		case "number":
			E_cad += "debe contener valores numéricos.\n";
			break;
		case "email":
			E_cad += "debe contener una dirección de correo válida.\n";
			break;
		case "date":
			E_cad += "debe contener una fecha válida (dd/mm/AAAA).\n";
			break;
		case "select":
			E_cad += "debe elegir algun item.\n";
			break;
	}
}
function init(){
	E_obj = new Array();
	E_cad = E_title;
	flag = true;
}
function is_string(pos){
	var str = document.getElementById(controls[pos]['obj']).value;
	if(str == '') 
		return false
	else
		return true;
}
function is_number(pos){
	var str = document.getElementById(controls[pos]['obj']).value;
	if(str == '') return false;
	if(str.match(/^[0-9]*$/))
		return true;
	else
		return false;
}
function is_email(pos){
	var str = document.getElementById(controls[pos]['obj']).value;
	if(str == '') return false;
	if(str.match(/^[a-zA-Z0-9-_\.]+@[a-zA-Z0-9-_\.]+[\.][a-z]+(\.[a-z]+)?$/))
		return true;
	else
		return false;
}
function is_date(pos){
	var str = document.getElementById(controls[pos]['obj']).value;
	if(str == '') return false;
	if(str.match(/\b(0?[1-9]|[12][0-9]|3[01])[- \/.](0?[1-9]|1[012])[- \/.](19|20)?[0-9]{2}\b/))
		return true;
	else
		return false;
}
function is_select(pos){
	var str = document.getElementById(controls[pos]['obj']).value;
	if(str==''){
		return false;
	}else{
		return true;
	}
}
