// JavaScript Document
//Libreria de validacion y funciones varias de formularios y ventanas V.0.2   
//Avelino Linares avelino.linares@gmail.com
//Modificada 5-Jul-2006  9:00 

function vacio(formulario,campo,nombreCampo){
/*
***********************************************************************
*Para verificar si el campo definido por formulario y campo esta vacio*
***********************************************************************
*/
	if(document.forms[formulario].elements[campo].value=="" || document.forms[formulario].elements[campo].value==" " || document.forms[formulario].elements[campo].value=="   "){
		error="El campo "+nombreCampo+" es requerido";	
	}else{
		error="ok";	
	}

	return error;
}

function validate(formulario,campo,tipo,requerido,nombreCampo){
		//alert(document.forms[formulario].elements[campo].name);
		Error="ok";
		bandera=vacio(formulario,campo,nombreCampo);
		if( requerido && bandera != "ok"){
			Error=bandera;
		}else{
		  if(document.forms[formulario].elements[campo].value!=""){
			switch(tipo){
			
				case "SoloTexto":
										//Comprobando que solo acepte caracteres alfabeticos
										var er= /^([a-z]|[A-Z]|á|é|í|ó|ú|ń|ü|\s|)+$/;
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="Solo se permiten letras en el campo "+nombreCampo;
										}
				break;
						
				case "Alfanum":						
										var er= /^([a-z]|[A-Z]|á|é|í|ó|ú|ń|ü|\.|\s|\'|\:|\-|\&|\_|\,|[0-9])+$/;
										
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="No se permiten caracteres especiales en el campo "+nombreCampo;
										}
				break;
				
				case "Number":						
										if(isNaN(document.forms[formulario].elements[campo].value)){
											Error="No se permiten letras en el campo "+nombreCampo;
										}
				break;
				

				case "Digito":						
										var er= /^([0-9])+$/;
										
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="Solo se permiten digitos en el campo "+nombreCampo;
										}
				break;
				
				

				case "Email":						
										var er = /^(.+\@.+\..+)$/;
										
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="La dirección de correo electronico que introdujo en el campo "+nombreCampo +" no es valida";
										}
				break;
				
				case "select":						
										//Para validar que un select no quede con su valor default     
									if(document.forms[formulario].elements[campo].options[document.forms[formulario].elements[campo].selectedIndex].value=="Default"){
											Error="Por favor seleccione un valor en el campo "+nombreCampo;
										}
				break;
				
				
				case "Guion":						
										var er=/^(\-|[0-9])+$/;
										
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="El campo "+ nombreCampo+" solo acepta numeros y guiones";
										}
				break;
				
				
				case "Telefono":						
										//Para validar telefonos 
										var er=/^(\-|[0-9]|\(|\))+$/;
										
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="El campo "+nombreCampo+" solo acepta numeros,guiones y paréntesis";
										}
				break;
				
				
				case "Archivo":		
										var er= /^([a-z]|[A-Z]|\.|\s|\_||[0-9])+$/;
										
										if(!er.test(document.forms[formulario].elements[campo].value)){
											Error="El nombre del archivo "+nombreCampo+" es inválido";
										}

				break;
				
				case "Todo":						

				break;
				
				
				default:
							alert("No se han definido validaciones "+nombreCampo);
				
				
		}
	  }
	}

return Error;
}

function tamano(formulario,campo,size){
	error=vacio(formulario,campo);
	if(error=="ok"){
		if(document.forms[formulario].elements[campo].value.length > size){
			error="El campo " + document.forms[formulario].elements[campo].name +" solo puede contener "+ size +" caracteres";	
		}
	
	}
	return error;
	
}

function canonica(fecha,destino){
/* Valida la fecha y la convierte a canonica 
	aaaa-mm-dd Formati usado por MySql*/
			var cano=new Array;
			var flag=new Boolean;
			flag=true;
			alerta="Fecha Inválida";
			//alert(fecha);
			cano = fecha.split("-"); 
				if(cano.length>=4){
					alerta+="\n-Demasiados Argumentos";
					flag=false;
				}else{
					dia=cano[0];
					mes=cano[1];
					year=cano[2];
					//dia=parseInt(dia);
					//mes=parseInt(mes);
					//year=parseInt(year);
					
					if(mes>12){
						alerta+="\n-Mes inválido";
						flag=false;
					}
					
					if(mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12){
						if(dia>31){
						alerta+="\n-Dia inválido \n";
							flag=false;
						}	
					}
					if(mes==4 || mes==6 || mes==9 || mes==11){
						if(dia > 30){
						alerta +="\n-Dia inválido \n";
							flag=false;
						}	
					}
					
			
			bici=year/4;
			bic=String(bici);
	
			var esto=new Array;
			esto=bic.split(".");
					
			if(esto.length<=1){
				if(mes==2){
					if(dia>29){
						alerta+="\n-Dia inválido \n";
						flag=false;
				
					}
				}
			
			}else{
				if(mes==2){
					if(dia>28){
						alerta+="\n-Dia inválido \n";
						flag=false;

					}
				}
			}
					if(year<1890){
						alerta+="\n-Por favor use ańos de 4 digitos \n";
						flag=false;
					}
				}
		
		if(flag && !isNaN(year) && !isNaN(mes) && !isNaN(dia)){
				destino.value=year+"-"+mes+"-"+dia;
				alerta="ok";
				//document.anios.anho.value=year;
		}else{
				destino.value="Fecha Inválida";
		}
			
		//alert(document.f1.FechaCanonica.value);
		flag=false;
		return alerta;

}



function textCounter(campo, contador, limite) {
/*
	Cuenta la longitud de text area y la limita
*/	
if (campo.value.length > limite){ // if too long...trim it!
	campo.value = campo.value.substring(0,limite);
// otherwise, update 'characters left' counter	
	}else{
		if (limite - campo.value.length == 0){
			contador.style.color="red";	
			contador.value="ha llegado al maximo de caracteres";
		}else{
			contador.style.color="#0066FF";
			contador.value = limite - campo.value.length +" caracteres restantes."; 
		}
	}
}

function mostrarErrores(errores,formulario){
	//	alert("comienza mostrar errores");
	cuentaErrores=0;  //Contador de todos los errores
	alerta="Se han encontrado los siguientes errores: \n";
	for(i=0;i<=errores.length-1;i++){
		if(errores[i]!="ok"){
			cuentaErrores++;
			alerta+="-"+errores[i]+"\n";
//			alert(alerta);
		}					
	}

	 if(cuentaErrores==0){
		if(formulario!="false"){
			formulario.submit();
		}else{
			return true;	
		}
	}else{
		alert(alerta);	
	}
}

function convertirFecha(fecha){
	var date=new Array();
	date=fecha.split("-");
	document.frm.fecha.value=date[2]+"-"+date[1]+"-"+date[0];
}


function abrirVentana(url,title,width,height){

  var left = (screen.width/2) - width/2;
  var top = (screen.height/2) - height/2;

  var styleStr = 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+',top='+top+',screenX='+left+',screenY='+top;

  window.open(url,title, styleStr);


}
	
function fondoUno(src,color_entrada) { 
    src.style.background=color_entrada;
	src.style.cursor="hand";
} 
function fondoDos(src,color_default) { 
    src.style.background=color_default;
	src.style.cursor="default";
}

