﻿function calcDigControl(digitos) {
    var pesos = new Array(6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
    var resul = 0; 
    var n = 0;   
    for (var i = digitos.length - 1; i > -1; i--) {
        var cifra = parseInt(digitos.substring(i, i + 1));
        resul += cifra * pesos[n];
        n++;
    }    
    var resto = resul % 11;
    resto = 11 - resto;
    if (resto == 10) {
        resto = 1;
    } else if (resto == 11) {
        resto = 0;
    }    
    return resto;    
}

// Correctly handle PNG transparency in Win IE 5.5 or higher.
// http://homepage.ntlworld.com/bobosola. Updated 02-March-2004
function correctPNG() {
  for(var i = 0; i < document.images.length; i++) {
    var img = document.images[i];
	  var imgName = img.src.toUpperCase();
	  if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
		  var imgID = (img.id) ? "id='" + img.id + "' " : ""; 
		  var imgClass = (img.className) ? "class='" + img.className + "' " : "";
		  var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
		  var imgStyle = "display:inline-block;" + img.style.cssText;
		  if (img.align == "left") imgStyle = "float:left;" + imgStyle;
		  if (img.align == "right") imgStyle = "float:right;" + imgStyle;
		  if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
		  var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + 
		    "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"; 
		  img.outerHTML = strNewHTML;
		  i = i - 1;
	  }
  }
  window.attachEvent("onload", correctPNG);
}

function esAlfaNumerico(campo) {
    var esAlfaNum = true;
    var i = 0;
    for (i = 0; i < campo.length && esAlfaNum; i++) {
        var c = campo.substring(i, i + 1);
        if (!esDigito(c) && !esLetra(c)) {
            esAlfaNum = false;
        }
    }
    return esAlfaNum;    
}

function esCCCValida(entidad, oficina, control, cuenta) {    
    var cont1 = parseInt(control.substring(0, 1));
    var cont2 = parseInt(control.substring(1, 2));
    var calc1 = calcDigControl(entidad + oficina);
    var calc2 = calcDigControl(cuenta);
    return calc1 == cont1 && calc2 == cont2;    
}

function esDigito(c) {   
    return ((c >= "0") && (c <= "9"))
}

function esDireccion(campo) {
    var esDir = true;
    var i = 0;
    for (i = 0; i < campo.length && esDir; i++) {
        var c = campo.substring(i, i + 1);
        if (!esDigito(c) && !esLetraExt(c) && c != '/' && c != '\'' && c != ',' && c != '.' && c != ' ') {
            esDir = false;
        }
    }
    return esDir; 
}

function esLenCampoValido(nomTxt, lenTxt, nError) {
    var esValido = false;
    if (document.getElementById(nomTxt).value.length == lenTxt) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;
}

function esCampoObligatorio(idCtl, nError) {
    var esValido = false;
    if (document.getElementById(idCtl).value.length > 0) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;
}

function esLetra(c) {
    return (((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z"))) 
}

function esLetraExt(c) {
    var letrasExt = "ñÑÇçÁáÉéÍíÓóÚúÀàÈèÒò ";
    var esExt = false;
    for (i = 0; i < letrasExt.length - 1 && !esExt; i++) {
        if (c == letrasExt.substring(i, i + 1)) {
            esExt = true;
        }    
    }
    return (esLetra(c) || esExt);
}

function esMailValido(mail) {  
  var valido = true;
  var posArroba = mail.indexOf("@");
  var len = mail.length;
  if (posArroba > 0 && posArroba < len - 5) {
    if (mail.indexOf("@", posArroba + 1) > 0) {
      valido = false;
    }
    if (valido) {
      posUltPunt = mail.lastIndexOf(".");
      posPriPunt = mail.indexOf(".");      
      if (posUltPunt > len - 3 || posPriPunt == 0 || posPriPunt == -1) {
        valido = false;
      } else {
        if (mail.indexOf("..") >= 0 || mail.indexOf("@.") >= 0 || mail.indexOf(".@") >= 0) {
          valido = false;
        }
      }    
    }
  } else {
    valido = false;
  }  
  return valido;
}

function esNumeroEntero(n) {
    var esNumero = true;
    var i = 0;
    for (i = 0; i < n.length && esNumero; i++) {
        var c = n.substring(i, i + 1);
        if (!esDigito(c)) {
            esNumero = false;
        }
    }
    return esNumero;    
}

function esTelefono(campo) {
    var esTel = true;
    var i = 0;
    for (i = 0; i < campo.length && esTel; i++) {
        var c = campo.substring(i, i + 1);
        if (!esDigito(c) && c != ' ' && c != '-' && c != '.' && c != '(' && c != ')') {
            esTel = false;
        }
    }
    return esTel;    
}

function esTextoPlano(campo) {
    var esTp = true;           
    for (i = 0; i < campo.length && esTp; i++) {
        var c = campo.substring(i, i + 1);
        if (!esDigito(c) && !esLetraExt(c) && c != ' ' && c != ',' && c != '.' && c != ':' && c != ';' && c != '?' && c != '¿' && c != '!' && c != '¡' && c != '(' && c != ')' && 
                c != '&') {
            esTp = false;
        }
    }
    return esTp;    
}

function soloAlfaNumericos(evt) {				
  // NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57
	var key = window.event ? evt.keyCode : evt.which; 
	return (key <= 13 || (key >= 48 && key <= 57) || (key >= 65 && key <=90) || (key >= 97 && key <= 122));
}

function soloDireccion(evt) {
  var key = window.event ? evt.keyCode : evt.which;
  return (key <= 13 || (key >= 48 && key <= 57) || (key >= 65 && key <=90) || (key >= 97 && key <= 122) ||  
	  key == 44 || key == 46 || key == 27 || key == 32 || key == 47 || key == 166 || key == 167 || (key >= 192 && key <= 252));
}

function soloTextoPlano(evt) {
  // NOTA: Backspace=8, Enter=13, 0=48, 9=57, A=65, Z=90, a=97, z=122, '=27, ,=44, .=46, ñ=241, Ñ=209, :=58,  [ESPACIO] =32, &=38, ?=63, !=33, ¡=173, ¿=168, 
	var key = window.event ? evt.keyCode : evt.which;		 	 
	return (key <= 13 || (key >= 48 && key <= 57) || (key >= 65 && key <=90) || (key >= 97 && key <= 122) || (key >= 192 && key <= 252) || 
	  key == 44 || key == 46 || key == 27 || key == 58 || key == 32 || key == 38 || key == 63 || key == 33 || key == 173 || key == 168);    
}

function soloNombres(evt) {
  // NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57, '.'=46, '-'=45, '_'= 95, '('=40, ')'=41, ' '=32
	var key = window.event ? evt.keyCode : evt.which; 
	return (key <= 13 || (key >= 65 && key <=90) || (key >= 97 && key <= 122) || key == 32 || key == 46 || (key >= 192 && key <= 252));  
}    

function soloNumeros(evt) {				
  // NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57
	var key = window.event ? evt.keyCode : evt.which; 
	return (key <= 13 || (key >= 48 && key <= 57));
}

function soloNumerosDecimales(evt, caja, decimales) {
  var key = window.event ? evt.keyCode : evt.which;	
	var esCorrecta = (key <= 13 || (key >= 48 && key <= 57));
	if (key == 46) {	    
	    if (window.event) {
	      key = 44;
	      evt.keyCode = 44;	    
	    }	    
	} else if (key == 44 && (caja.value.indexOf(",") == -1) && caja.value.length > 0) {	    
	  esCorrecta = true;
	} else if (key == 45 && caja.value.length == 0) {
	  esCorrecta = true;
	} else if (esCorrecta && key >= 48 && key <= 57) {
	  var len = caja.value.length;
	  var indice = caja.value.indexOf(",");
	  if (indice > -1) {
	    if (len > indice + 2) {
	      esCorrecta = false;
	    }
	  }	    
	}
	return esCorrecta; 
}

function soloTelefonos(evt) {
  // NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57, '.'=46, '-'=45, '('=40, ')'=41, ' '=32
	var key = window.event ? evt.keyCode : evt.which; 
	return (key <= 13 || (key >= 48 && key <= 57) || key == 46 || key == 45 || key == 40 || key == 41 || key == 32);
}

function soloTextoMail(evt) {
  // NOTA: Backspace=8, Enter=13, '0'=48, '9'=57, 'A'=65, 'Z'=90, 'a'=97, 'z'=122, '.'=46, '_'=95, '@'=64, '-'=45
  var key = window.event ? evt.keyCode : evt.which;  
  return ((key >= 48 && key <= 57)|| (key >= 65 && key <=90) || (key >= 97 && key <= 122) || key == 46 || key == 95 || 
    key == 64 || key == 45);
}

function validaAlfaNumerico(id, nError) {
    var esValido = false;
    if (esAlfaNumerico(document.getElementById(id).value)) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;
}

function validaDireccion(id, nError) {
    var esValido = false;
    if (esDireccion(document.getElementById(id).value)) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;    
}

function validaEmail(id, nError) {
    var esValido = false;
    if (esMailValido(document.getElementById(id).value)) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;    
} 

function validaNumeroEntero(id, nError) {
    var esValido = false;
    if (esNumeroEntero(document.getElementById(id).value)) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;    
}

function validaTextoPlano(id, nError) {
    var esValido = false;
    if (esTextoPlano(document.getElementById(id).value)) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;    
}

function validaTelefono(id, nError) {
    var esValido = false;
    if (esTelefono(document.getElementById(id).value)) {
        esValido = true;
    }
    if (!esValido) {
        alertAjax(nError);
    }
    return esValido;    
}