function ValidaTipoDato(cad,obj,par)
{
	if ((par=="1") || (par=="0" && esVacio(obj.value)==false))
	{	
		switch (cad)
		{
			case "s" :
								if (esTexto(obj.value)==false)
								{
									alert("Ingrese solo letras del alfabeto.");
									return false
								}										
			break; 
			case "n" :
								if (esNumero(obj.value)==false)
								{
									alert("Ingrese solo digitos.");
									return false
								}	
			break;
			case "c" :
								if (esCaracter(obj.value)==false)
								{
									alert("Error... Datos Invalidos.");
									return false
								}
			break;
			case "e" :
								if (esEmail(obj.value)==false)
								{
									alert("Ingrese una cuenta EMail valida.");
									return false
								}
			break;
		}
	}
}

function ValidForm()
{
	var formulario			= eval("document." + NameForm);
	var arrControles		= CadControls.split(",")
	var arrObligatorio	= CadObligatory.split(",")
	var arrTipodato			= CadTypeData.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("Por favor complete los campos requeridos.");
										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.... Please select one of the options");
									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.... Please select one of the options");
								  elemento.focus();
								  return false;
								}								
							}
		break;		
		}
	}
	if (SendMail=="1")
	{
		coleccionCorreo();
		coleccionFormulario();
	}
	return true;
}

function esVacio(cad)
{//return true cad string is null
	var i;
    
  if ((cad == null) || (cad.length == 0))
  {
		return true;
  }
  for (i = 0; i < cad.length; i++)
  {   
		// Verify Null
		var c = cad.charAt(i);

		if (space.indexOf(c) == -1) 
		{
			return false;
		}
  }
	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." + NameForm);
	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." + NameForm + "." + valor + ".value")
								break;
			case false :
								coleccion +=valor
								break;
		}
		coleccion += ","; 	
	}
	formulario.hidCorreo.value=coleccion.substring(0,coleccion.length-1);
}

function coleccionFormulario()
{
	var formulario=eval("document." + NameForm);
	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 RunFunctions(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
	}
}

/*********************************** VALIDA IE **********************************************************************/

function noLetter(e) {
    var myChar;

    if (document.all) {
        e = window.event;
	myChar = String.fromCharCode(e.keyCode);
    }
    else
        if (document.layers)
 	    var myChar = String.fromCharCode(e.which);
 
    if (myChar=='A' || myChar=='a' || myChar=='B' || myChar=='b' ||
        myChar=='C' || myChar=='c' || myChar=='D' || myChar=='d' ||
        myChar=='E' || myChar=='e' || myChar=='F' || myChar=='f' ||
        myChar=='G' || myChar=='g' || myChar=='H' || myChar=='h' ||
        myChar=='I' || myChar=='i' || myChar=='J' || myChar=='j' ||
        myChar=='K' || myChar=='k' || myChar=='L' || myChar=='l' ||
        myChar=='M' || myChar=='m' || myChar=='N' || myChar=='n' ||
        myChar=='Ñ' || myChar=='ñ' || myChar=='O' || myChar=='o' ||
        myChar=='P' || myChar=='p' || myChar=='Q' || myChar=='q' ||
        myChar=='R' || myChar=='r' || myChar=='S' || myChar=='s' ||
        myChar=='T' || myChar=='t' || myChar=='U' || myChar=='u' ||
        myChar=='V' || myChar=='v' || myChar=='W' || myChar=='w' ||
        myChar=='Y' || myChar=='y' || myChar=='X' || myChar=='x' ||
        myChar=='Z' || myChar=='z' || myChar=='~' || myChar=='!' ||
        myChar=='@' || myChar=='#' || myChar=='$' || myChar=='%' ||
        myChar=='^' || myChar=='&' || myChar=='*' || myChar=='(' ||
        myChar==')' || myChar=='-' || myChar=='_' || myChar=='=' ||
        myChar=='+' || myChar=='[' || myChar==']' || myChar=='{' ||
        myChar=='}' || myChar=='"' || myChar=='|' || myChar==';' ||
        myChar==',' || myChar=='<' || myChar=="'" || myChar=='>' ||
	myChar=='.' || myChar=='?' || myChar=='|' || myChar=='°' ||
	myChar=='¿' || myChar=='/' || myChar=='¡' || myChar==':' ) {
        if (document.layers)
            return false;
        else if (document.all)
            e.returnValue = false
    }
}

function noDigito(e) {
    var myChar;

    if (document.all) {
        e = window.event;
	myChar = String.fromCharCode(e.keyCode);
    }
    else
        if (document.layers)
 	    var myChar = String.fromCharCode(e.which);
 
    if (myChar=='0' || myChar=='1' || myChar=='2' || myChar=='3' ||
        myChar=='4' || myChar=='5' || myChar=='6' || myChar=='7' ||
        myChar=='8' || myChar=='9' || myChar=='~' || myChar=='!' ||
        myChar=='@' || myChar=='#' || myChar=='$' || myChar=='%' ||
        myChar=='^' || myChar=='&' || myChar=='*' || myChar=='(' ||
        myChar==')' || myChar=='-' || myChar=='_' || myChar=='=' ||
        myChar=='+' || myChar=='[' || myChar==']' || myChar=='{' ||
        myChar=='}' || myChar=='"' || myChar=='|' || myChar==';' ||
        myChar==',' || myChar=='<' || myChar=="'" || myChar=='>' ||
		myChar=='.' || myChar=='?' || myChar=='|' ) {
        if (document.layers)
            return false;
        else if (document.all)
            e.returnValue = false
    }
}

function noCaracter(e) {
    var myChar;

    if (document.all) {
        e = window.event;
	myChar = String.fromCharCode(e.keyCode);
    }
    else
        if (document.layers)
 	    var myChar = String.fromCharCode(e.which);

    if (myChar=='~' || myChar=='!' || myChar=='@' || myChar=='#' || 
	myChar=='$' || myChar=='%' || myChar=='^' || myChar=='&' ||
	myChar=='*' || myChar=='(' || myChar==')' || myChar=='-' || 
	myChar=='_' || myChar=='=' || myChar=='+' || myChar=='[' ||
	myChar==']' || myChar=='{' || myChar=='}' || myChar=='"' || 
	myChar=='|' || myChar==';' || myChar==',' || myChar=='<' || 
	myChar=="'" || myChar=='>' || myChar=='.' || myChar=='?' || 
	myChar=='|' || myChar=='´' || myChar=='/' )
	{
        if (document.layers)
            return false;
        else if (document.all)
            e.returnValue = false
    	}
}