var letters=" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var numbers=" 1234567890";
var lineNumbers="1234567890,-";
var signs=",.:;@-";
var mathsigns="+-_=()*/";
var custom="<>#$%&? ¿";
var space = " ";
var coma = ",";
var dot = ".";
var plus = "+";
var sign="-";
var parentesis="()";

function ValidarOnKeyPress(e,allow){
    
    var key; 
    var a;    
    key=document.all?parseInt(e.keyCode): parseInt(e.which);    
    if(key==8||key==0)return true;
    if(key==241){
       a = 209;
    }
    else if(key>=97 && key<=122){
        a = parseInt(key) - 32;
    }
    else{
       a = key;
    }    

    var c = String.fromCharCode(a);
   
    if(allow.indexOf(c)!=-1){    
        return true;
    }else{
        return false;
    }
}

var mensaje ="";

function Validar_aux(tipo,valor,id,idioma){
    var REGEX_alpha = /[0-9]|[|]|[!"#$%&()=?{}_*+@]|[-]|\[|\]/;
    var REGEX_alpha_num = /[|]|[!"#$%&()=?{}_*+@]|[-]|\[|\]/;
    var REGEX_alpha_y_otros = /[0-9]|[|]|[!"#$%&()=?{}_*+@]|[-]|\[|\]/;
    var REGEX_alpha_num_y_otros= /[|]|[!"#$%&()=?{}_*+@]|[-]|\[|\]/;
    var REGEX_day_num = /^([0][1-9]|[1-2][0-9]|3[01]|[1-9])$/;
    var REGEX_email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    var REGEX_integer_num = /^(\d)+$/;
    var REGEX_money = /^(\d)+((\.)(\d){2}){0,1}$/;
    var REGEX_month_alpha = /^(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC|ENE|FEB|MAR|ABR|MAY|JUN|JUL|AGO|SEP|OCT|NOV|DIC)$/;
    var REGEX_month_num = /^([0][1-9]|[1][1-2]|[1-9]|10)$/;
    var REGEX_tel_fax = /^[(]{0,1}(\d){3}[)]{0,1}(\-){0,1}((\d){7,9}|(\d){3}(\-){0,1}(\d){4,6}|(\d){4}(\-){0,1}(\d){4,5})|(\d){7,8}$/;    

    switch ( tipo ){

        case 'alpha':
            if(valor=="" || REGEX_alpha.test(valor)){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar letras.";
                }else{
                    mensaje = mensaje + " \n You can only type letters.";
                }
                return false;
            }
            else{
                return true;
            }
        break;
          
        case 'alpha_null':
            if(valor!="" && REGEX_alpha.test(valor)){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar letras.";
                }else{
                    mensaje = mensaje + " \n You can only type letters.";
                }
                return false;
            }
            else{
                return true;
            }
        break;

        case 'alpha_num':
            if(valor=="" || REGEX_alpha_num.test(valor)){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar letras o numeros.";
                }else{
                    mensaje = mensaje + " \n You can only type letters or numbers.";
                }
                return false;
            }else{
                return true;
            }
        break;
        
        case 'alpha_num_y_otros':
            if(valor=="" || REGEX_alpha_num_y_otros.test(valor)){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar letras, numeros, '/', '-' y ','";
                }else{
                    mensaje = mensaje + " \n You can only type letters, numbers, '/', '-' y ','";
                }
                return false;
            }else{
                return true;
            }            
        break;
        
        case 'alpha_y_otros':
            if(valor=="" || REGEX_alpha_y_otros.test(valor)){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar letras, '/', '-' y ','";
                }else{
                    mensaje = mensaje + " \n You can only type letters, '/', '-' y ','";
                }
                return false;
            }else{
                return true;
            }            
        break;
        
        case 'alpha_num_null':
            if(valor=="") return true;
            else if(REGEX_alpha_num.test(valor)){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar letras o numeros.";
                }else{
                    mensaje = mensaje + " \n You can only type letters or numbers.";
                }
                return false;
            }else{
                return true;
            }            
        break;
        
        case 'day_num':
            if(valor=="" || !(REGEX_day_num.test(valor))){
                return false;
            }else{
                return true;
            }
        break;
        
        case 'drop_down':
            if(valor == "-1"|| valor == ""){
                return false;
            }
            else{
               return true;
            }
        break;
        
        case 'email':
            if(valor=="" || !(REGEX_email.test(valor))){
                return false;
            }else{
                return true;
            }
        break;
        
        case 'email_null':
            if(valor=="") return true;
            else if(!(REGEX_email.test(valor))){
                return false;
            }
            else{
                return true;
            }
        break;
                       
        case 'integer_num':
            if(valor=="" || !(REGEX_integer_num.test(valor))){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar numeros.";
                }else{
                    mensaje = mensaje + " \n You can only type numbers.";
                }
                return false;
            }else{
                return true;
            }
        break;
        
        case 'integer_num_null':
            if(valor=="") return true;
            else if(!(REGEX_integer_num.test(valor))){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar numeros.";
                }else{
                    mensaje = mensaje + " \n You can only type numbers.";
                }
                return false;
            }else{
                return true;
            }
        break;               
 
        case 'numeros_null':
            if(valor=="") return true;
            else if(!(REGEX_integer_num.test(valor))){
                if(idioma==0){//español
                    mensaje = mensaje + " \n Solo puede ingresar numeros.";
                }else{
                    mensaje = mensaje + " \n You can only type numbers.";
                }
                return false;
            }else{
                return true;
            }
        break;      
        
        case 'month_alpha':
            if(valor=="" || !(REGEX_month_alpha.test(valor))){
                return false;
            }else{
                return true;
            }
        break;
        
        case 'month_num':
            if(valor=="" || !(REGEX_month_num.test(valor))){
                return false;
            }else{
                return true;
            }
        break;
        
        case 'not_null':
            if(valor==""){
                return false;
            }else{
                return true;
            }            
        break;
            
        case 'tel_fax':
            if(valor=="" || !(REGEX_tel_fax.test(valor))){
                return false;
            }else{
                return true;
            }            
        break;

        case 'tel_fax_null':
            if(valor=="") return true;
            else if(!(REGEX_tel_fax.test(valor))){
                return false;
            }
            else{
                return true;
            }            
        break;
        
        case 'user_login':
            if(valor=="" || !(REGEX_alpha_num.test(valor))){
                return false;
            }else{
                return true;
            }
        break;
        
        case 'user_password':
            if(valor=="" || !(REGEX_alpha_num.test(valor))){
                return false;
            }else{
                return true;
            }
        break;
        
        case 'year':
            var today = new Date();      
            var this_year = parseInt(today.getUTCFullYear());
            if(valor=="" || !(REGEX_integer_num.test(valor)) || valor < 1933 || valor > this_year){                
                return false;
            }else{
                return true;
            }
        break;
    }
    return true;        
}

function ValidarEng(tipo,valor,id,message){
    var idioma = 1; //inglés
    mensaje = message;
    if(tipo==undefined || valor==undefined || id==undefined){
        return false;
    }
    if(!Validar_aux(tipo,valor,id,idioma)){
        alert(mensaje);
        document.getElementById(id).focus();
        return false;
    }else{
        return true;
    }
}

function Validar(tipo,valor,id,message){
    var idioma = 0; //español
    mensaje = message;
    if(tipo==undefined || valor==undefined || id==undefined){
        return false;
    }
    if(!Validar_aux(tipo,valor,id,idioma)){
        alert(mensaje);
        document.getElementById(id).focus();
        return false;
    }else{
        return true;
    }
}




function calcular_edad(dia,mes,ano){ 
    hoy = new Date(); 
  
    var int_ano = parseInt(ano);
    var int_mes = parseInt(mes);
    var int_dia = parseInt(dia);
  
    var int_ano_hoy = parseInt(hoy.getUTCFullYear());
    var int_mes_hoy = parseInt(hoy.getUTCMonth());//devuelve 0[enero] - 11[diciembre]
    int_mes_hoy = int_mes_hoy + 1;
    var int_dia_hoy = parseInt(hoy.getUTCDate());
  
    var edad = (int_ano_hoy - int_ano) - 1;
    
    if ((int_mes_hoy  - int_mes) < 0){ 
        return edad;
    }
    else if ((int_mes_hoy  - int_mes) > 0){
        return edad + 1;
    }
    else if ((int_dia_hoy - int_dia) >= 0){
    return edad + 1;
    }
    else{
    return edad;
    }
    }

function ValidaEmail(campo){
        var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
        dato = document.getElementById(campo).value;
        if (!email.test(dato))
        {
        return false;
        }
        else
        {
        return true;
        }
}

function ValidarFecha(dia,mes,anio,mensaje){

    var aux = new String(document.getElementById(dia).value);
    diaEm=parseInt(document.getElementById(dia).value);
    mesEm=document.getElementById(mes).value;
    yearEm=document.getElementById(anio).value;    

    if(diaEm==0){
        tmp = aux.substring(1,2);
        diaEm=parseInt(tmp);
    }

    if(!(isDate(diaEm,mesEm,yearEm))){
        alert(mensaje);
        return false;
    }
    else{
        return true;
    }
}

function y2k(number) { 
    return (number < 1000) ? number + 1900 : number; 
}

function isDate(day,month,year){
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    var year2 = (y2k(test.getYear()));
    var month2 = (test.getMonth());
    var day2 = (test.getDate());
    var date1 = day+"/"+month+"/"+year;
    var date2 = day2+"/"+month2+"/"+year2;
    if (date1 == date2)   
        return true;
    else
        return false;
}

function dateDiff(strDate1,strDate2){
    var datDate1= Date.parse(strDate1);
    var datDate2= Date.parse(strDate2);
    var diff = ((datDate1-datDate2)/(24*60*60*1000)) 
    return(diff);
}      

function selectVisaTrabajo(){
    if (document.getElementById("rbtntieneVT").checked==true){
        document.getElementById("tblvisatrabajo").style.display="block";
    }
    if (document.getElementById("rbtnnotieneVT").checked==true){
        document.getElementById("tblvisatrabajo").style.display="none";
    }
}

function EliminarIdioma(){
    HideTableIdm('IdmDisplay','tblIdioma','Idiomas');
}

function AgregarIdioma(){
    DisplayTable('IdmDisplay','tblIdioma','Idiomas');
}

function EliminarEstudio(){
    HideTableEst('EstDisplay','tblEstudio','Estudios');
}

function AgregarEstudio(){
    DisplayTable('EstDisplay','tblEstudio','Estudios');
}

function EliminarEntrenamiento(){
    HideTableEnt('EntDisplay','tblEntrenamiento','Entrenamientos');
}

function AgregarEntrenamiento(){
    DisplayTable('EntDisplay','tblEntrenamiento','Entrenamientos');
}

function EliminarDoc(control){
    TblDoc= document.getElementById('tblDoc' + control);
    TblDoc.style.display = "none";
    document.getElementById("slctipodoc" + control).value="-1";
    document.getElementById("txtnumdoc" + control).value="";
    return;
 }

function AgregarDoc(control){
   var i = parseInt(control) + 1;
   if (i<='5'){
      TblDoc= document.getElementById('tblDoc' + i);
      TblDoc.style.display = "block";
      return;
      
   }
   else{
      alert('Numero Maximo de Documentos');
      return;
   }
   
}

 function DisplayTable(ContadorTabla,NombreTabla,Desplegado){
 
	    Contador  = document.getElementById(ContadorTabla).value;
	    Contador = parseInt(Contador) + 1;
	    if (parseInt(Contador) <= 5){
		    TblDoc= document.getElementById(NombreTabla + Contador);
		    TblDoc.style.display = "block";
		    document.getElementById(ContadorTabla).value= Contador;
	    }else{
		    alert("Numero Maximo de " + Desplegado);
	    }
  }
  
   
  function HideTableEst(ContadorTabla,NombreTabla,Desplegado){
	    Contador  = document.getElementById(ContadorTabla).value;
	    if (parseInt(Contador) >= 2){
		    TblDoc= document.getElementById(NombreTabla + Contador);
		    TblDoc.style.display = "none";
		    document.getElementById("slcpais" + Contador).value="";
		    document.getElementById("slcnivelacad" + Contador).value="";
		    document.getElementById("slccentroedu" + Contador).value="";
		    document.getElementById("txtcentroedu" + Contador).value="";
		    document.getElementById("slctitulo" + Contador).value="";
		    document.getElementById("slctitulacion" + Contador).value="";
		    document.getElementById("slcanoscomplet" + Contador).value="";
		    document.getElementById("txtdiaing" + Contador).value="";
		    document.getElementById("slcmesing" + Contador).value="";
		    document.getElementById("txtanoing" + Contador).value="";
		    document.getElementById("txtdiaegr" + Contador).value="";
		    document.getElementById("slcmesegr" + Contador).value="";
		    document.getElementById("txtanoegr" + Contador).value="";
		    Contador = parseInt(Contador) - 1;
		    document.getElementById(ContadorTabla).value= Contador;
	    }else{
		    alert("Numero Minimo de " + Desplegado);
	    }
	    
  }
  function HideTableEnt(ContadorTabla,NombreTabla,Desplegado){
	    Contador  = document.getElementById(ContadorTabla).value;
	    if (parseInt(Contador) >= 1){
		    TblDoc= document.getElementById(NombreTabla + Contador);
		    TblDoc.style.display = "none";
		   
		    document.getElementById("txtentrenamiento" + Contador).value="";
		    document.getElementById("txtinstitucion" + Contador).value="";
		    document.getElementById("slcpaisent" + Contador).value="";
		    document.getElementById("txtdiafin" + Contador).value="";
		    document.getElementById("slcmesfin" + Contador).value="";
		    document.getElementById("txtanofin" + Contador).value="";
		   	     
		    Contador = parseInt(Contador) - 1;
		    document.getElementById(ContadorTabla).value= Contador;
	    }else{
		    alert("Numero Minimo de " + Desplegado);
	    }
	    
  }  
  function HideTableIdm(ContadorTabla,NombreTabla,Desplegado){
	    Contador  = document.getElementById(ContadorTabla).value;
	    if (parseInt(Contador) >= 2){
		    TblDoc= document.getElementById(NombreTabla + Contador);
		    TblDoc.style.display = "none";
		    document.getElementById("cboIdioma" + Contador).value="";
            document.getElementById("cbonivelesc" + Contador).value="";
            document.getElementById("cbonivelcomp" + Contador).value="";
            document.getElementById("cbonivelconv" + Contador).value="";
            Contador = parseInt(Contador) - 1;
		    document.getElementById(ContadorTabla).value= Contador;
	    }else{
		    alert("Numero Minimo de " + Desplegado);
	    }
	    
  }  
function AddElemento(cboSocios, cboSociosAsignados){
    i = document.getElementById(cboSocios).options.selectedIndex;
    lon = document.getElementById(cboSocios).options.length;
    
    if ( (i<0) || (i>=lon) ){
        alert('Seleccione un elemento.');
        return;
    }

    
    valueItem = document.getElementById(cboSocios).options[i].value;
    textItem = document.getElementById(cboSocios).options[i].text;
    
    if(searchItem(cboSociosAsignados,valueItem)==-1){
        addItem(cboSociosAsignados,valueItem, textItem);
        j = document.getElementById(cboSocios).options.selectedIndex;
        document.getElementById(cboSocios).options[j] = null;
    }
}

function removeElemento(cboSociosAsignados, cboSocios){
    lon = document.getElementById(cboSocios).options.length;
      
    i = document.getElementById(cboSocios).options.selectedIndex;
    
    if ( (i<0) || (i>=lon) ){
        alert('Seleccione un elemento.');
        return;
    }
    
    valueItem = document.getElementById(cboSocios).options[i].value;
    textItem = document.getElementById(cboSocios).options[i].text;
    
    if(searchItem(cboSociosAsignados,valueItem)==-1){
        addItem(cboSociosAsignados,valueItem, textItem);
        j = document.getElementById(cboSocios).options.selectedIndex;
        document.getElementById(cboSocios).options[j] = null;
    }
}

function searchItem(controlSelect, valueSearchItem){
    m = document.getElementById(controlSelect).options.length;
    j = -1;
    for(i=0; i<m ; i++){
        if(document.getElementById(controlSelect).options[i].value == valueSearchItem){
            return i;
        }
    }
    return j;
}

function addItem(controlSelect, valueItem, textItem){
    var oOption = document.createElement("OPTION");
    oOption.text = textItem;
    oOption.value = valueItem;
    document.getElementById(controlSelect).options.add(oOption);    
}

function CollectAreas(){
    var m = document.getElementById('cboareasasig').options.length;
    var s=""
    for(i=0;i<m;i++){
        s = s  + document.getElementById('cboareasasig').options[i].value + ',';
    }
    s= s.substring(0,s.length -1);
    document.getElementById('hidAreas').value=s;
   
}

function CollectVisas(){
    var m = document.getElementById('cbovisasasig').options.length;
    var s=""
    for(i=0;i<m;i++){
        s = s  + document.getElementById('cbovisasasig').options[i].value + ',';
    }
    s= s.substring(0,s.length -1);
    document.getElementById('hidVisaPaises').value=s;
   
}

function CollectProgramasApp(){
    var m = document.getElementById('cboprogramasasig').options.length;
    var s=""
    for(i=0;i<m;i++){
        s = s  + document.getElementById('cboprogramasasig').options[i].value + ',';
    }
    s= s.substring(0,s.length -1);
    document.getElementById('hdnProgramasApp').value=s;
   
}

function CollectIdiomas(){
    var s="";
    for(i=1;i<=5;i++){
        if ((document.getElementById("cboIdioma" + i) != undefined) && (document.getElementById("cboIdioma" + i).value != "")){
            s = s  + document.getElementById("cboIdioma" + i).options[document.getElementById("cboIdioma" + i).selectedIndex].value + ',';
        }
    }
    s= s.substring(0,s.length -1);
    document.getElementById('hdnIdiomas').value=s;
}

function IdiomaRepetido(){
    var i = 0;
    var j = 0;
    idioma_array = new Array();
    idioma_array=document.getElementById('hdnIdiomas').value.split(",");
    var m = idioma_array.length;
    for (i=0;i< m ;i++){
        j= i+1;
        for (j;j< m ;j++){
            if (idioma_array[i]==idioma_array[j]){
                return (false);
            }  
        }    
    }
    return (true);
}

function cancel_enter(e){            
    var key;         
    key=document.all?parseInt(e.keyCode): parseInt(e.which);
    if(key==13){                
        e.returnValue=false;
        e.cancel = true;
        return false;
    }else{
        return true;
    }
}

function EliminarReferencia(){
    HideTableRef('RefDisplay','tblReferencia','Referencias');
}

function AgregarReferencia(){
    DisplayTable('RefDisplay','tblReferencia','Referencias');
}

 function HideTableRef(ContadorTabla,NombreTabla,Desplegado){
	    Contador  = document.getElementById(ContadorTabla).value;
	    if (parseInt(Contador) >= 2){
		    TblDoc= document.getElementById(NombreTabla + Contador);
		    TblDoc.style.display = "none";
		    document.getElementById("txtNombre" + Contador).value="";
		    document.getElementById("txtOcupacion" + Contador).value="";
		    document.getElementById("txtarea" + Contador).value="";
		    document.getElementById("txttelefono" + Contador).value="";
            Contador = parseInt(Contador) - 1;
		    document.getElementById(ContadorTabla).value= Contador;
	    }else{
		    alert("Numero Minimo de " + Desplegado);
	    }
	    
  }  
  
function ChangePage(option,page){
    if (confirm("Desea guardar los cambios efectuados?")== true){
        ValidarForm(option);
    }
    else{
        document.location.href=page;
    }
}