function ValidaTipoDato(cad,obj,par)
{
	if ((par=="1") || (par=="0" && esVacio(obj.value)==false))
	{	
		switch (cad)
		{
			case "s" :
								if (esTexto(obj.value)==false)
								{
									alert("Error.... Por favor ingrese solo letras del alfabeto");
									return false
								}										
			break; 
			case "n" :
								if (esNumero(obj.value)==false)
								{
									alert("Error.... Por favor ingrese solo digitos");
									return false
								}	
			break;
			case "d" :
								if (isNaN(obj.value))
								{
									alert("Error.... Por favor ingrese solo números");
									return false
								}	
			break;
			case "c" :
								if (esCaracter(obj.value)==false)
								{
									alert("Error.... Ingreso de datos erroneo");
									return false
								}
			break;
			case "e" :
								if (esEmail(obj.value)==false)
								{
									alert("Error.... Por favor ingrese un correo electronico valido");
									return false
								}
			break;
		}
	}
}

function ValidarFormulario()
{
	var formulario			= eval("document." + NombreFormulario);
	var arrControles		= cadControles.split(",")
	var arrObligatorio	= cadObligatorio.split(",")
	var arrTipodato			= cadTipodato.split(",")	
	
	for (i=0;i<arrControles.length;i++)
	{	
		var objeto=arrControles[i]
		var elemento=formulario[i]
		var obligatorio=arrObligatorio[i]
		var tipodato=arrTipodato[i]
		
		switch (objeto)
		{ 
	   	case "t" : 
								if (obligatorio=="1")
								{
									if (esVacio(elemento.value))
									{
										alert("Error.... este campo es obligatorio de ingresar");
										elemento.focus();
										elemento.select();
										return false
										break;
									}
									else
									{
										if (ValidaTipoDato(tipodato,elemento,"1")==false)
										{
											elemento.focus();
											elemento.select();
											return false
											break;
										}
									}
								}
								else
								{
										if (ValidaTipoDato(tipodato,elemento,"0")==false)
										{
											elemento.focus();
											elemento.select();
											return false
											break;
										}								
								}
		break; 
		case "c" : 
							if (obligatorio=="1")
							{
								if (esVacio(elemento.options[elemento.selectedIndex].value))
								{
									alert("Error.... Por favor seleccione una de las opciones");
									elemento.focus();
									return false;
								}
							}
	  break; 
		case "r" : 
							if (obligatorio=="1")
							{
								var grupo = formulario[elemento.name];
					      var checked = false;
					      
								if (!grupo.length)
								{
								  checked = elemento.checked;
								}
								else
								{
								  for (var r = 0; r < grupo.length; r++)
								    if ((checked = grupo[r].checked))
								    {
								      break;
								    }
								}
								
								if (!checked) 
								{
									alert("Error.... Por favor seleccione una de las opciones");
								  elemento.focus();
								  return false;
								}								
							}
		break;		
		}
	}
	if (EnviarCorreo=="1")
	{
		coleccionCorreo();
		coleccionFormulario();
	}
	return true;
}

function esVacio(cad)
{//retorna true si la cadena esta vacia o tiene espacios en blanco
	var i;
    
  if ((cad == null) || (cad.length == 0))
  {
		return true;
  }
  for (i = 0; i < cad.length; i++)
  {   
		// Chequea  si el actual caracter no es espacio en blanco.
		var c = cad.charAt(i);

		if (espacio.indexOf(c) == -1) 
		{
			return false;
		}
  }
	// Todos los caracteres son espacios en blanco
	return true;
}

function esCaracter(cad)
{
	strValorOk=/^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|Ñ|[@]|[\/]|[\\]|[0-9]|[,]|[.]|[;]|[:]|[°]|[º]|[¡]|[!]|[+]|[-]|[ ]|[?]|[¿]|[_]|[-]|["]|[#]|[(]|[)]|[%]|[&]|\s)+$/
	if (!strValorOk.test(cad))
	{
		return false
	}
}

function esNumero(cad)
{
	strValorOk=/^[0-9]+$/  
	if (!strValorOk.test(cad))
	{
		return false
	}
}

function esTexto(cad)
{
	strValorOk=/^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|Ñ|[.]|[,]|[ ])+$/
	if (!strValorOk.test(cad))
	{
		return false
	}
}

function esEmail(cad) 
{
  if (cad.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
	{
  	return true
	}
  else
	{
		return false
	}
}

function esFecha(dia,mes,anno)
{	

	var day  = dia;
	var month= mes;
	var year = anno;


	if ((month==4 || month==6 || month==9 || month==11) && day==31) 
	{// checkea si el mes tiene 31 dias
		alert("El mes de "+month+" no tiene 31 dias!")
		mes.focus();
		return false
	}

	if (month == 2) 
	{ // checkea si febrero tiene 29 dias
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));

		if (day>29 || (day==29 && !isleap)) 
		{
			alert("Febrero " + year + " no tiene " + day + " dias!");
			mes.focus();
			return false;
	    }
	}
	return true;  // date is valid
}

function buscaControl(cad,obj)
{
	encontro=false
	for (i=0;i<obj.length;i++)
	{	
		if (obj[i].name==cad)
		{
			encontro=true
			break;
		}
	}
	return encontro
}

function coleccionCorreo()
{
	var formulario=eval("document." + NombreFormulario);
	var coleccion=""
	var parametros=CorreoElectronicoA + "," + NombreA + "," + CorreoElectronicoDe + "," + NombreDe + "," + CopiaA + "," + NombreCopia + "," + Asunto + "," + Archivo				
	var arrayParametros=parametros.split(",")
		
	for (var j=0;j<arrayParametros.length;j++)
	{
		var valor=arrayParametros[j]
		var esControl=buscaControl(valor,formulario)
		switch(esControl)
		{
			case true :
								coleccion +=eval("document." + NombreFormulario + "." + valor + ".value")
								break;
			case false :
								coleccion +=valor
								break;
		}
		coleccion += ","; 	
	}
	formulario.hidCorreo.value=coleccion.substring(0,coleccion.length-1);
}

function coleccionFormulario()
{
	var formulario=eval("document." + NombreFormulario);
	var coleccion  ="";
	for (var i=0;i<formulario.length;i++)
	{
		tipo=formulario[i].type
		
		if (tipo != "hidden" && tipo != "button" && tipo != "reset" && tipo != "submit")
		{
			switch (tipo)
			{
				case "select-one":
													coleccion += formulario[i].options[formulario[i].selectedIndex].value
													break;
				default					 :
													coleccion += formulario[i].value
			}
			coleccion += ","; 
		}
	}
	formulario.hidFormulario.value=coleccion.substring(0,coleccion.length-1);
}

function ejecutaFunciones(cad)
{
	var arrFunciones=cad.split("+")
	var cadComodin=""
	var cadSentencia="if (" 
	
	for (var k=0;k<arrFunciones.length;k++)
	{
		if (k==arrFunciones.length-1)
		{
			cadSentencia +=arrFunciones[k] + "==true)" 
		}
		else
		{
			cadSentencia +=arrFunciones[k] + "==true && " 
		}
	}
	eval(cadSentencia + "{cadComodin='1'} else{cadComodin='0'}");
	switch (cadComodin) 
	{
		case "0" :
							return false
		case "1" :
							return true
	}
}

function Round(Numero, decimales)
{
  //Convertimos el valor a entero de acuerdo al # de decimales
  Valor = Numero;
  ndecimales = Math.pow(10,decimales);
  Valor = Valor * ndecimales;

  //Redondeamos y luego dividimos por el # de decimales
  Valor = Math.round(Valor);
  Valor = Valor /ndecimales
  return Valor;
}
