// JavaScript Document

//***LEYENDA*****************************************************************
// obligatorio (campo en el que se comprabara si esta rellenado o seleccionado)
// entero (campo en el que se comprobara si el formato de su valor es un numero entero "positivo o negativo" correcto)
// decimal (campo en el que se comprobara si el formato de su valor es un numero decimal "positivo o negativo y un . para los decimales" correcto)
// email (campo en el que se comprobara si el formato de su valor es un email correcto)
// mensaje (sera el valor del mensaje de alerta en el caso de que sea obligatorio y no tenga valor)
// mensaje_tipo (sera el valor del mensaje de alerta en el caso de que no tenga un formato correcto)
//alert("Dentro");

/*
Cualquier letra en minuscula	 [a-z]
Entero	^(?:\+|-)?\d+$
Correo electrónico

/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/

URL

^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\’\/\\\+&amp;%\$#_]*)?$

Contraseña segura

(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$
(Entre 8 y 10 caracteres, por lo menos un digito y un alfanumérico, y no puede contener caracteres espaciales)

Fecha

^\d{1,2}\/\d{1,2}\/\d{2,4}$
(Por ejemplo 01/01/2007)

Hora	^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$
(Por ejemplo 10:45:23)
Número tarjeta de crédito

^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$

Número teléfono

^[0-9]{2,3}-? ?[0-9]{6,7}$

Código postal

^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$

Certificado Identificación Fiscal

^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$
*/  
function formato_entero(value){
	var numero_correcto;
	var numero_correcto = value.match(/^[\+-]?\d+$/);
	
	if (numero_correcto){
		numero_correcto = true
	} else {
		numero_correcto = false
	}
	return numero_correcto;
	
	//return false;
}
function formato_decimal(value){
	var numero_correcto;
	var numero_correcto = value.match(/^[\+-]?\d+(\.\d+)?$/);
	
	if (numero_correcto){
		numero_correcto = true
	} else {
		numero_correcto = false
	}
	return numero_correcto;
	//return false;
}
function formato_email(value){
	var email_correcto;
	var Email_correcto = value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
	
	if (Email_correcto){
		email_correcto = true
	} else {
		email_correcto = false
	}
	return email_correcto;
	
}

function cambio_color(obj,color,formulario){
	obj.style.backgroundColor=color;
	if(obj.type=="radio"){
		for(i=0;i<formulario.elements.length;i++){
			if(formulario.elements[i].id==obj.id){
				//alert(formulario.elements[i].id);
				formulario.elements[i].style.backgroundColor=color;
			}
		}
	}
}

function validar_formulario(formulario){
	//alert("funcion validar_formulario");
	resultado=true;
	for(i=0;i<formulario.elements.length&&resultado;i++){
		if(formulario.elements[i].obligatorio!=undefined){// campo obligatorio
			//alert("el campo es obligatorio "+formulario.elements[i].id+" - "+formulario.elements[i].type);
			if(formulario.elements[i].type=="checkbox"){
				//alert("checkbox");
				if(!formulario.elements[i].checked){//falta comprobacion espacios en blanco
					resultado=false;
				}	
			}else if(formulario.elements[i].type!="radio"){//text
				if(formulario.elements[i].value==""){//falta comprobacion espacios en blanco
					resultado=false;
				}
			}else if(formulario.elements[i].type=="radio"){
					//alert("radio");
					if(!formulario.elements[i].checked){
						//alert("no checked");
						resultado_radio=false;
						for(j=0;j<formulario.elements.length&&!resultado_radio;j++){
							if(formulario.elements[j].obligatorio!=undefined&&i!=j){
								
								if(formulario.elements[j].id==formulario.elements[i].id){
									resultado_radio=formulario.elements[j].checked;
								}
							}
						}
						resultado=resultado_radio;
					}
			
			}
		}
		//alert (resultado);
	}
	
	
	if(!resultado){
		if(formulario.elements[i-1].mensaje!=undefined)
			alert(formulario.elements[i-1].mensaje);
		else
			alert("El campo "+formulario.elements[i-1].id+" es obligatorio");
		formulario.elements[i-1].color_antiguo=formulario.elements[i-1].style.backgroundColor;
		formulario.elements[i-1].onblur  = function() {cambio_color(this,this.color_antiguo,formulario);}
		formulario.elements[i-1].style.backgroundColor="FFFF99";
		
		if(formulario.elements[i-1].type=="radio"){
			for(j=0;j<formulario.elements.length;j++){
				if(formulario.elements[j].id==formulario.elements[i-1].id){
					formulario.elements[j].style.backgroundColor="FFFF99";
				}
			}
		}
		//}
		if(formulario.elements[i-1].type!="hidden"){
			formulario.elements[i-1].focus();
		}
		return resultado;
	}
	
	
	
	for(i=0;i<formulario.elements.length&&resultado;i++){
		if(formulario.elements[i].entero!=undefined){// campo numerico
			resultado=formato_entero(formulario.elements[i].value);
		}
		else if(formulario.elements[i].decimal!=undefined){
			resultado=formato_decimal(formulario.elements[i].value);
		}
		else if(formulario.elements[i].email!=undefined){
			resultado=formato_email(formulario.elements[i].value);
		}
	}
	
	if(!resultado){
		if(formulario.elements[i-1].mensaje_tipo!=undefined)
			alert(formulario.elements[i-1].mensaje_tipo);
		else
			alert("El campo "+formulario.elements[i-1].id+" no tiene el formato adecuado");
		formulario.elements[i-1].color_antiguo=formulario.elements[i-1].style.backgroundColor;
		formulario.elements[i-1].onblur  = function() {cambio_color(this,this.color_antiguo,formulario);}
		formulario.elements[i-1].style.backgroundColor="FFFF99";
		
		if(formulario.elements[i-1].type!="hidden"){
			formulario.elements[i-1].focus();
		}
	}
	
	return resultado;
	
}

