/* *****************************************************************
 Validacion de formularios
 =========================
 Ej. de uso:
 
 En el HEAD incluir el archivo JS:
 <script type="text/javascript" language="javascript" src="validaciones.js"></script>
 
 En el formulario se debe agregar el evento onsubmit():
 <form id="frm" name="frm" method="post" action="pagina.php" onsubmit="return submitForm(this);">
 
 A los campos que son requeridos se les agrega el atributo PD="TIPO_DATO|MENSAJE":
 <input name="nombre" type="text" id="nombre" PD="string|Nombre completo" />
 
 TIPO_DATO, puede ser: 
 - STRING
 - DATE
 - NUMBER
 - EMAIL
 - LIST
***************************************************************** */
function submitForm(obj){
	var campos = obj.elements;
	var Error = '';
	var primerCampo = false;
	//----
	for(i=0;i<campos.length;i++){
		var attr = campos[i].attributes;
		for(x=0;x<attr.length;x++){
			var flag = false;
			if(attr[x].name.toUpperCase()=='PD'){
				var res = attr[x].value.split(/\|/);
				var tipo = res[0].replace(/^\s+|\s+$/g, "");
				var label = res[1].replace(/^\s+|\s+$/g, "");
				var valor = campos[i].value;
				switch(tipo.toUpperCase()){
					case 'STRING':
						if(!PD_isString(valor)){
							Error += '- "'+label+'" es obligatorio y debe contener caracteres alfanumericos.\n';
							if(!primerCampo) primerCampo = campos[i];
						}
						flag = true;
						break;
					case 'NUMBER':
						if(!PD_isNumber(valor)){
							Error += '- "'+label+'" es obligatorio y debe contener un numero.\n';
							if(!primerCampo) primerCampo = campos[i];
						}
						flag = true;
						break;
					case 'LIST':
						if(!PD_isString(valor)){
							Error += '- "'+label+'" es obligatorio, debe seleccionar alguna opcion.\n';
							if(!primerCampo) primerCampo = campos[i];
						}
						flag = true;
						break;
					case 'DATE':
						if(!PD_isDate(valor)){
							Error += '- "'+label+'" es obligatorio y debe contener una fecha valida (dd/mm/AAAA).\n';
							if(!primerCampo) primerCampo = campos[i];
						}
						flag = true;
						break;
					case 'EMAIL':
						if(!PD_isEmail(valor)){
							Error += '- "'+label+'" es obligatorio y debe contener una direccion de correo valida.\n';
							if(!primerCampo) primerCampo = campos[i];
						}
						flag = true;
						break;
				}
			}
			if(flag) break;
		}
	}
	if(Error!=''){
		var cad = 'Se encontraron los siguientes errores:\n';
		cad += '---------------------------------------------\n';
		cad += Error;
		cad += '---------------------------------------------';
		alert(cad);
		primerCampo.focus();
		return false;
	}
	//----------
	enviar();
	//----------
	return true;
}
function PD_isNumber(str){
	if(str.match(/^\d+$/))return true;
	else return false;
}
function PD_isString(str){
	var cad = str.replace(/^\s+|\s+$/g, "");
	if(cad!='') return true;
	else return false;
}
function PD_isDate(str){
	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 PD_isEmail(str){
	if(str.match(/^[A-Za-z0-9_\/-\/.]*@[A-Za-z0-9_-]+\.[A-Za-z0-9_\/.\/-]+[A-za-z]$/)) return true;
	else return false;
}





