function validar(obj){
	var campos = obj.elements;
	var Error = '';
	var primerCampo = false;
	for(i=0;i<campos.length;i++){
		var attr = campos[i].getAttribute('PM');
		if(attr != null){
			var res = attr.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(!PM_isString(valor)){
						Error += '- "'+label+'" es obligatorio y debe contener caracteres alfanumericos.\n';
						if(!primerCampo) primerCampo = campos[i];
					}
					flag = true;
					break;
				case 'NUMBER':
					if(!PM_isNumber(valor)){
						Error += '- "'+label+'" es obligatorio y debe contener un numero.\n';
						if(!primerCampo) primerCampo = campos[i];
					}
					flag = true;
					break;
				case 'FLOAT':
					if(!PM_isFloat(valor)){
						Error += '- "'+label+'" es obligatorio y debe contener un numero (55 o 55.25).\n';
						if(!primerCampo) primerCampo = campos[i];
					}
					break;
				case 'LIST':
					if(!PM_isString(valor)){
						Error += '- "'+label+'" es obligatorio, debe seleccionar alguna opcion.\n';
						if(!primerCampo) primerCampo = campos[i];
					}
					flag = true;
					break;
				case 'DATE':
					if(!PM_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(!PM_isEmail(valor)){
						Error += '- "'+label+'" es obligatorio y debe contener una direccion de correo valida.\n';
						if(!primerCampo) primerCampo = campos[i];
					}
					flag = true;
					break;
			}
		}
	}
	if(Error!=''){
		var cad = 'Se encontraron los siguientes errores:\n';
		cad += '---------------------------------------------\n';
		cad += Error;
		cad += '---------------------------------------------';
		alert(cad);
		primerCampo.focus();
		return false;
	}
	return true;
}
function PM_isNumber(str){
	if(str.match(/^\-?\d+$/))return true;
	else return false;
}
function PM_isFloat(str){
	if(str.match(/^\-?\d+(\.\d+)?$/))return true;
	else return false;
}
function PM_isString(str){
	var cad = str.replace(/^\s+|\s+$/g, "");
	if(cad!='') return true;
	else return false;
}
function PM_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 PM_isEmail(str){
	if(str.match (/^[A-Za-z][A-Za-z0-9_-]*@[A-Za-z0-9_-]+\.[A-Za-z0-9_.]+[A-za-z]$/)) return true;
	else if(str.match (/^[A-Za-z][A-Za-z0-9_]+\.[A-Za-z0-9_.]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/)) return true;
	else if(str.match (/^[A-Za-z][A-Za-z0-9_]+\.[A-Za-z0-9_.]*@[A-Za-z0-9_]+\-[A-Za-z0-9_.]+\.[A-Za-z0-9_.]+[A-za-z]$/)) return true;

	else return false;
}
