var error = false;       

       var mensaje_nombre = "";
       var mensaje_email = "";
       var mensaje_url = "";
       var mensaje_telefono = "";
       var mensaje_numerico = "";
       var mensaje_usuario = "";
       var mensaje_entero = "";
       var mensaje_ano = "";
       var mensaje_fecha = "";
       var mensaje_nif = "";
       var mensaje_cp = "";
       var num_cuenta = "";
       
       
if ($('.mi_form').is('.sin_mensajes')) {
       //#elm has the class
       $('.mi_form .ayuda').css('display','none !important');
} else {
       var mensaje_nombre = lang['mensaje_nombre'];
       var mensaje_email = lang['mensaje_email'];
       var mensaje_url = lang['mensaje_url'];
       var mensaje_telefono = lang['mensaje_telefono'];
       var mensaje_numerico = lang['mensaje_numerico'];
       var mensaje_usuario = lang['mensaje_usuario'];
       var mensaje_entero = lang['mensaje_entero'];
       var mensaje_ano = lang['mensaje_ano'];
       var mensaje_fecha = lang['mensaje_fecha'];
       var mensaje_nif = lang['mensaje_nif'];
       var mensaje_cp = lang['mensaje_cp'];
       var num_cuenta = lang['num_cuenta'];
}

//Funciones para validación del formulario
function valida_requerido(mi_texto, min_long){
       //var min_long = 2;
       
       if (mi_texto.length < min_long){
	   largo_texto=false;
       }else{
	   largo_texto=true;
       }
       
       if(mi_texto==null){largo_texto=true;}
       
       return largo_texto;
}

function id_numeric(string){
    if(!/\D/.test(string)) return true;
    else if(/^\d+\,\d+$/.test(string)) return true; //(,)
    else return false;
}

function is_integer(val){
    if(val==null)
    {
        return false;
    }
    if (val.length==0)
    {
        return false;
    }
    for (var i = 0; i < val.length; i++) 
    {
        var ch = val.charAt(i)
        if (i == 0 && ch == "-")
        {
            continue
        }
        if (ch < "0" || ch > "9")
        {
            return false
        }
    }
    return true
}


function valida_numerico(mi_texto){

   //chequear si numerico   
    var es_numerico=true;
    if((id_numeric(mi_texto)==false) || (mi_texto=='')){es_numerico=false;}
   
   
   return es_numerico;
}

function valida_entero(mi_texto){

   //chequear si numerico entero   
    var es_entero=true;
    if((is_integer(mi_texto)==false) || (mi_texto=='')){es_entero=false;}
   
   return es_entero;
}

function valida_ano(mi_texto){

   //chequear si numerico entero   
    var es_ano=true;
    if((is_integer(mi_texto)==false) || (mi_texto=='')){es_ano=false;}
   
   if(parseFloat(mi_texto)>2030 || parseFloat(mi_texto)<1800){es_ano=false;}
   
   if(parseFloat(mi_texto)==0){es_ano=true}
   
   return es_ano;
}

function valida_telefono(mi_texto){
       
    var caract_validos = "+0123456789.-() ";
    var min_long = 9;
    var es_telefono=true;
    var caracter;

    //chequear caracteres
    for (i = 0; i < mi_texto.length && es_telefono == true; i++)
       {
       caracter = mi_texto.charAt(i);
       if (caract_validos.indexOf(caracter) == -1)
	  {
	  es_telefono = false;
	  }
       }
   //chequear lontitud
   if (mi_texto.length<min_long){es_telefono=false}

   return es_telefono;
}

function valida_nombre_archivo(mi_texto){
    
    var caract_validos = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    var es_nombre_archivo=true;
    var Char;
       
    //chequear caracteres
    for (i = 0; i < mi_texto.length; i++)
       {
       Char = mi_texto.charAt(i);
       if (caract_validos.indexOf(Char) == -1)
	  {
	  es_nombre_archivo = false;
	  }
       }
	
    if(mi_texto.length==0){es_nombre_archivo=true;}
    
   return es_nombre_archivo;
}

function valida_usuario(mi_texto, min_long){
    
    var caract_validos = "0123456789abcdefghijklmnñopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    var es_usuario_valido=true;
    var caracter;

    //chequear caracteres
    for (i = 0; i < mi_texto.length; i++)
       {
       caracter = mi_texto.charAt(i);
       if (caract_validos.indexOf(caracter) == -1)
	  {
	  es_usuario_valido = false;
	  }
       }
       
    if (mi_texto.length<min_long){
	   es_usuario_valido = false;
       }
    
   return es_usuario_valido;
      
}

function valida_cp(mi_texto){

    var caract_validos = "0123456789";
    var longitud = 5;
    var es_cp=true;
    var caracter;
    
    //chequear caracteres
    for (i = 0; i < mi_texto.length && es_cp == true; i++)
       {
       caracter = mi_texto.charAt(i);
       if (caract_validos.indexOf(caracter) == -1)
	  {
	  es_cp = false;
	  }
       }
   //chequear lontitud
   if (mi_texto.length != longitud){es_cp=false}

   return es_cp;
}

function valida_email(s){

     var reg = /^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i;
       return reg.test(s);

}


function valida_url(s) {
       
       //if(s.substr(0,7)!='http://'){s = 'http://' + s;}
       
	var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	return regexp.test(s);
}


//VALIDAR FECHA
function valida_fecha(fecha){
    // Adaptado de valida_ Fecha By Luciano 1998 (elcodigo.com)
    
    var mi_fecha = new String(fecha)	// Crea un string
    var Realmi_fecha= new Date()	// Para sacar la fecha de hoy
    var Ano= new String(mi_fecha.substring(mi_fecha.lastIndexOf("/")+1,mi_fecha.length))
    var Mes= new String(mi_fecha.substring(mi_fecha.indexOf("/")+1,mi_fecha.lastIndexOf("/")))
    var Dia= new String(mi_fecha.substring(0,mi_fecha.indexOf("/")))
    
    if (fecha.length !=10){return false;}
    
    // Valido el año
    if (isNaN(Ano) || Ano.length<4 || parseFloat(Ano)<1900){return false;}
    
    // Valido el Mes
    if (isNaN(Mes) || parseFloat(Mes)<1 || parseFloat(Mes)>12){return false;}
    
    // Valido el Dia
    if (isNaN(Dia) || parseInt(Dia, 10)<1 || parseInt(Dia, 10)>31){return false;}
    
    if (Mes==4 || Mes==6 || Mes==9 || Mes==11 || Mes==2) {
	if (Mes==2 && Dia > 28 || Dia>30) {
	    return false;
	}
    }
    return true;
}





///VALIDAR NIF
function valida_nif(nif) {
     var numero;
     var letra_aux;
     
     //Si la primera letra es A o B es un CIF
     if (((nif.substring(0,1)=="A") || (nif.substring(0,1)=="B")) && (nif.length==9)){
	    return true;
	}
     
     //comprobar NIF o NIE
     numero = nif.substr(0,nif.length-1);
     
     //Si es nie, la primera letra hay que transformarla en 0, 1 o 2
     if (numero.substring(0,1).toUpperCase()=="X"){numero = "0" + nif.substr(1,nif.length-1);}
     if (numero.substring(0,1).toUpperCase()=="Y"){numero = "1" + nif.substr(1,nif.length-1);}
     if (numero.substring(0,1).toUpperCase()=="Z"){numero = "2" + nif.substr(1,nif.length-1);}
     
     letra_aux = nif.substr(nif.length-1,1);
     numero = parseFloat(numero) % 23;
     letra='TRWAGMYFPDXBNJZSQVHLCKET';
     letra=letra.substring(numero,numero+1);
     
     if ((letra!=letra_aux)||(nif=='')){
	return false;
     }else{
	return true;
     }
     
}
 


//VALIDAR CUENTA CORRIENTE
// Código original: http://www.programacion.com/articulo/validacion_del_numero_de_cuenta_ccc_135
 function obtener_digito(valor){
    valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
    control = 0;
    for (i=0; i<=9; i++)
      control += parseInt(valor.charAt(i)) * valores[i];
    control = 11 - (control % 11);
    if (control == 11) control = 0;
    else if (control == 10) control = 1;
    return control;
  }
 
 function numerico(valor){
    cad = valor.toString();
    for (var i=0; i<cad.length; i++) {
	var caracter = cad.charAt(i);
	if (caracter<"0" || caracter>"9"){return false;}
    }
    
    return true;
  }
 
function valida_cuenta(banco, sucursal, dc, cuenta) {
    EsCuenta=true;
    
    if(banco.length != 4 || sucursal.length != 4 ||
	dc.length != 2 || cuenta.length != 10){
      EsCuenta=false;
	
    }else {
	
      if (!numerico(banco) || !numerico(sucursal) ||
	  !numerico(dc) || !numerico(cuenta)){
	    
	EsCuenta=false;
      }else {
	if (!(obtener_digito("00" + banco + sucursal) ==
	      parseInt(dc.charAt(0))) || 
	    !(obtener_digito(cuenta) ==
	      parseInt(dc.charAt(1)))){
	  EsCuenta=false;
	  //alert('cuenta erronea');
	  }else{
	    //alert('cuenta correcta');
	    EsCuenta=true;
	}
      }
    }
    return EsCuenta;
}


function valida_contrasena(contrasena1, contrasena2) {
       
       if(contrasena1 == contrasena2){
              return true;
       }else{
              return false;
       }
       
}


//jquery
jQuery.noConflict()(function($){
    
    $(document).ready(function() {
              
           //poner 0 en enteros al entrar
           $('input.entero').focus(function(event) {
               if($(this).val() == '0'){$(this).val('');}
               
           });
           
           $('input.entero').blur(function(event) {
               if($(this).val() == ''){$(this).val(0);}
           });
           
           
           error = false;
           
           //formulario
           $('<div class="validacion"></div>').insertAfter('.mi_form .requerido, .mi_form .numerico, .mi_form .usuario, .mi_form .entero, .mi_form .ano, .mi_form .telefono, .mi_form .nombre_archivo, .mi_form .email, .mi_form .url, .mi_form .nif, .mi_form .fecha, .mi_form .cp, #cuenta, .mi_form .contrasena1, .mi_form .contrasena2');
           //$('<div class="validacion"></div>').insertAfter('.mi_form input, .mi_form textarea');
           
           
           //poner http:// en web
           $('.mi_form .url').focus(function() {
              var s = $(this).val();
              if(s.substr(0,7) != "http://"){
                     $(this).val("http://");
              }
           });
           
           //codigo si validación ok
           $.fn.ok = function() {
               $(this).css('border', '2px solid green');
               $(this).next('.validacion').css('background', 'none').addClass('ok').removeClass('cancel');
               $(this).next('.validacion').next('.ayuda').hide();
           }
       
           $.fn.cancel = function(mensaje) {
               if ($(this).val() ==''){
                   $(this).removeAttr('style');
                   $(this).next('.validacion').css('background', 'none').removeClass('cancel').removeClass('ok');
                   //$(this).next('.validacion').next('.ayuda').hide();
               }else{
                   $(this).css('border', '2px solid red');
                   $(this).next('.validacion').css('background', 'none').addClass('cancel').removeClass('ok');
                   //$(this).next('.validacion').html('<div class="ayuda">' + mensaje + '</div>');
                   //$(this).next('.validacion').next('.ayuda').show();
               }
           }
           
           //campo requerido
           $('.mi_form .requerido').blur(function() {
               min_long = $(this).attr("data-num_char");
               
               if (valida_requerido($(this).val(),min_long) == true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_nombre);
               }
           });
           
           //campo usuario
           $('.mi_form .usuario').blur(function() {
               
               min_long = $(this).attr("data-num_char");
               
               if (valida_usuario($(this).val(),min_long)== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_usuario);
               }
           });
           
           //campo numerico
           $('.mi_form .numerico').blur(function() {
               if (valida_numerico($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_numerico);
               }
           });
           
           //campo numerico entero
           $('.mi_form .entero').blur(function() {
               if (valida_entero($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_entero);
               }
           });
           
           //campo numerico ano
           $('.mi_form .ano').blur(function() {
               if (valida_ano($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_ano);
               }
           });
           
           
           //campo tipo telefono
           $('.mi_form .telefono').blur(function() {
               if (valida_telefono($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_telefono);
               }
           });
           
           //campo tipo nombre archivo
           $('.mi_form .nombre_archivo').blur(function() {
               if (valida_nombre_archivo($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_nombre_archivo);
               }
           });
       
           //campo tipo email
           $('.mi_form .email').blur(function() {
               if (valida_email($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_email);
               }
           });
           
           //campo tipo url
           $('.mi_form .url').blur(function() {
               
               if (valida_url($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_url);
               }
           });
           
           //campo tipo fecha
           $('.mi_form .fecha').blur(function() {
               if (valida_fecha($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_fecha);
               }
           });
           
           //campo tipo nif
           $('.mi_form .nif').blur(function() {
               if (valida_nif($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_nif);
               }
           });
           
           //campo tipo Código Postal
           $('.mi_form .cp').blur(function() {
               if (valida_cp($(this).val())== true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_cp);
               }
           });
           
           //cuenta corriente
           $(".mi_form .num_cuenta").blur(function() {
               //alert($('#banco').val());
               if(valida_cuenta($('#banco').val(),$('#sucursal').val(),$('#dc').val(),$('#cuenta').val())== true){
                   $('.num_cuenta').ok();
               }else{
                   $('.num_cuenta').cancel(mensaje_num_cuenta);
               }
           });
           
           //campo tipo contraseña
           $('.mi_form .contrasena2').blur(function() {
               if (valida_contrasena($('.mi_form .contrasena1').val(),$('.mi_form .contrasena2').val()) == true) {
                   $(this).ok();
               }else{
                   $(this).cancel(mensaje_contrasena);
               }
           });
       
       });
});

