//----------------------------------------------------------------------------------
//EMAIL
//----------------------------------------------------------------------------------
//Comprueba que el email es correcto
function ValidarEmail(email,requerido) {
	e = Trim(email.value);
	if ((requerido != true) && (e==""))
	return true;
	
	if (e == "" ) {
		alert('Debe introducir el email');
		email.focus();
		return false;
	}
	if (isEmail(e))
		return true;
	alert('El email no es correcto');
	email.focus();
	return false;
}
//función que indica si la dirección de email tiene la sintaxis correcta
function isEmail(argvalue) {
  if (argvalue.indexOf(" ") != -1)
    return false;
  else if (argvalue.indexOf("@") == -1)
    return false;
  else if (argvalue.indexOf("@") == 0)
    return false;
  else if (argvalue.indexOf("@") == (argvalue.length-1))
    return false;
  
  var arrayString=new Array()
  arrayString[0]=argvalue.substring(0,argvalue.indexOf("@"))
  arrayString[1]=argvalue.substring(argvalue.indexOf("@")+1,argvalue.length)

  if (arrayString[1].indexOf(".") == -1)
    return false;
  else if (arrayString[1].indexOf(".") == 0)
    return false;
  else if (arrayString[1].charAt(arrayString[1].length-1) == ".")
    return false;
  else if (arrayString[0].charAt(arrayString[0].length-1) == ".") {
    return false;
  }
  return true;
}
//----------------------------------------------------------------------------------
//VALIDAR TELEFONO
//----------------------------------------------------------------------------------
function ValidarTelefono(campo){
	if (((campo.value.substr(0, 1)=='9') || (campo.value.substr(0, 1)=='8') || (campo.value.substr(0, 1)=='6')) && (campo.value.length == 9) && (ComprobarNumero(campo,'')))
		return true;
	else
		campo.focus();
		alert('Debe introducir un número de teléfono válido.');
		return false;
}
//----------------------------------------------------------------------------------
//VALIDAR INPUT OBLIGATORIOS
//----------------------------------------------------------------------------------
function ComprobarOblig(campo,mensaje){
	if (Trim(campo.value)=="") {
		alert('Debe introducir'+ mensaje)
		campo.focus()
		return false;
	}
	else{
		return true
	}
}
function ComprobarObligCombo(campo,mensaje){
	if (Trim(campo.options[campo.options.selectedIndex].value)=="") {
		if(mensaje!=''){
			alert('Debe seleccionar'+ mensaje);
		}
		campo.focus()
		return false;
	}
	else{
		return true
	}
}
function ComprobarObligCombo2(campo,mensaje){
	if (campo.options.selectedIndex<=0) {
		alert('Debe seleccionar '+ mensaje)
		campo.focus()
		return false;
	}
	else{
		return true
	}
}
function ComprobarObligChecks(nameCampo){
	var campo;
	var i;
	
	for (i=0; i < document.all.length; i++) {
		campo=document.all.item(i);
		if(campo.type == "checkbox" && campo.name.indexOf(nameCampo+":")>=0){
			if(campo.checked){
				return true;
			}
		}
	}
	return false;
}
function ComprobarObligRadios(objcheck){
	//objcheck=MM_findObj(namecheck)
	for (i=0;i<objcheck.length;i++){
		if(objcheck[i].checked){
			return true;
		}
	}
	return false;

}

function validarSizeTextArea(campo,etiquetaCampo,size){
	var resp=true;
	if(campo.value.length > size){
		campo.focus();
		alert('La longitud permitida para el campo '+etiquetaCampo+' es de '+size+' caracteres. Ha introducido ' + campo.value.length + ' caracteres.');
		resp=false;
	}
	return resp;
}

//----------------------------------------------------------------------------------
//CIF/NIF
//----------------------------------------------------------------------------------
function comprobarNIF(campo) {
	if (ValidarNIF(campo.value)){
		var tmpNIF=campo.value;
		var longitud=tmpNIF.length;
		var i;
		if(longitud<9){
			for(i=0;i<9-longitud;i++){
				tmpNIF="0"+tmpNIF;
			}
			campo.value=tmpNIF;
		}
		return true;
	}
	else {
		campo.focus();
		alert('La letra del NIF/CIF introducido no es correcta. Compruebe, por favor, que ha introducido el número y la letra sin guiones ni espacios.');
		return false;
	}
}
function ValidarNIF(NIF) {
	var prim;
	if (NIF.length < 6){
		return false;
	}
	NIF = NIF.toUpperCase();
	prim = NIF.substr(0,1);
	if (prim == 'X') {
		NIF = NIF.substring(1, NIF.length);
	}
	prim = NIF.substr(0,1);
	if (isNaN(prim)) {
		resto = NIF.substring(1, NIF.length);
		if (prim == LetraNIFFisicas(resto))
			return true;
		else
			return false;
	}
	else {
		fin = NIF.substr(NIF.length -1,1);
		resto = NIF.substr(0, NIF.length -1);
		if (fin == LetraNIFFisicas(resto))
			return true;
		else
			return false;
	}
}
function LetraNIFFisicas(Caracter) {
  var Cadena;
  var i;
  var resp;
  if (isNaN(Caracter)) return 'AB';
  Cadena = "TRWAGMYFPDXBNJZSQVHLCKE";
  i = parseInt(Caracter / 23);
  i = Caracter - i * 23 + 1;
  resp = Cadena.substr(i-1, 1);
  return resp;
}
//no se donde se usa
function comprobarDNI(campo) {	
	if (numCheck(campo.value))
		return true;
	else {
		campo.focus();
		alert('Introduzca sólo números para el DNI.');
		return false;
	}
}
function ValidarCif(cif) {
	var prim;
	var r1,r2,p1,p3,p5,p7;
	var cociente, resto, dc;
	
	cadena = "ABCDEFGHSPQ"
	EQUIV = "ABCDEFGHIJ"
	
	if (cif.length != 9) {
		return false;
  	}
  	
  	cif = cif.toUpperCase();
	prim = cif.substr(0,1);
  	if (cadena.search(prim) == -1) {
  		return false;
  	}
  
	if (isNaN(cif.substr(1,7))) {
		return false;
	}
  	  
  	r1 = parseInt(cif.charAt(2)) + parseInt(cif.charAt(4)) + parseInt(cif.charAt(6));
  	p1 = 2 * parseInt(cif.charAt(1));
  	cociente = parseInt(p1/10);
  	resto = (p1%10);
	p1 = cociente + resto;
	p3 = 2 * parseInt(cif.charAt(3));
	cociente = parseInt(p3/10);
	resto = (p3%10);
	p3 = cociente + resto
	p5 = 2 * parseInt(cif.charAt(5));
	cociente = parseInt(p5/10);
	resto = (p5%10);
	p5 = cociente + resto;
	p7 = 2 * parseInt(cif.charAt(7));
	cociente = parseInt(p7/10);
	resto = (p7%10);
	p7 = cociente + resto;
	r2 = p1 + p3 + p5 + p7;
	r = r1 + r2;
	resto = (r%10);
	resto = 10 - resto;
	dc = cif.substr(cif.length -1,1);
	
	cadena = cadena.substr(0,8);
	if ((cadena.search(prim) != -1) && !(isNaN(dc))) {
		if (resto == 10) {
			resto = 0;
		}
		if (resto != parseInt(dc)) {
			return false;
		}
	} else {
		dig = EQUIV.substr(resto-1,1);
		if (dc != dig) {
			return false;
		}
	}
	return true;  	
}
//----------------------------------------------------------------------------------
//DIGITO CONTROL CUENTA BANCARIA
//----------------------------------------------------------------------------------
function CalculaDC(Banco, Cuenta){
      Pesos= new Array(6,3,7,9,10,5,8,4,2,1);
      var result ='';
      var iTemp =0;
      for (var n=0;n<=7;n++){
         iTemp  = iTemp + Banco.substr(7 - n, 1) * Pesos[n];
      }
      result = 11 - iTemp % 11;
      if (result > 9){
        result=1-result % 10;
      }
      iTemp=0;
      for (var n=0;n<=9;n++){
         iTemp  = iTemp + Cuenta.substr(9 - n, 1) * Pesos[n];
      }
      iTemp =11 - (iTemp % 11);
      if (iTemp > 9){
       iTemp =1-(iTemp % 10);
      }
      result=result*10+iTemp;
      return(result);
 }
//----------------------------------------------------------------------------------
//NUMEROS
//----------------------------------------------------------------------------------
 function ComprobarNumero(campo,mensaje) {
	var argvalue=campo.value;
	if (argvalue.length == 0){
		alert(mensaje + " no es un número valido.")
		campo.focus();
		return false;
	}
	for (var n = 0; n < argvalue.length; n++){
		if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9"){
			if(mensaje!=''){
				alert(mensaje + " no es un número válido.")
				campo.focus();
			}
			return false;
		}
	}
	return true;
}
//----------------------------------------------------------------------------------
//CADENAS
//----------------------------------------------------------------------------------
function Trim(Cadena){
//**********************************************************************
//***Función: Trim()
//***Objetivo: Quita los espacios al inicio y al final de una cadena
//***Parámetros:
//**********************************************************************
	var varI;	
	var varRetorno;
	varRetorno = Cadena;
	while (varRetorno.charAt(0) == " ") {
		varRetorno = varRetorno.substr(1, varRetorno.length -1);
	}	
	while (varRetorno.charAt(varRetorno.length -1) == " ") {
		varRetorno = varRetorno.substr(0, varRetorno.length -1);
	}
	return(varRetorno);
}
//--------------------------------------------------------------------
//FECHAS
//--------------------------------------------------------------------
function ComprobarFechaValida(campo, mensaje) {	
	return fecha_correcta(campo.value);
}

/* Fecha correcta ? */
function fecha_correcta (cadena)
{
  var error = 0;
  var dia = 0;
  var mes = 0;
  var anio = 0;

  if (cadena.length != 10)
  {
    alert ("La fecha debe tener 10 caracteres\nFormato correcto: dd/mm/aaaa");
    return false;
  }
  for (i=0;i<cadena.length;i++)
  {
    if (i==2 || i==5)
    {
      if (cadena.charAt(i) != '/')
      {
        alert ("El separador debe ser el caracter \"/\"\nFormato correcto: dd/mm/yyyy");
        return false;
      }
    }
    else
      if (cadena.charAt(i) < '0'|| cadena.charAt(i) > '9')
      {
        alert ("La fecha s" + unescape("%F3") + "lo puede contener caracteres num" + unescape("%E9") + "ricos\n o el caracter \"/\"\nFormato correcto: dd/mm/yyyy");
        return false;
      }
  }
  /* Comprobar dias, meses, anios */
  if (cadena.charAt(0) == '0' && 
      (cadena.charAt(1) == '8' || cadena.charAt(1) == '9'))
    dia = parseInt (cadena.charAt(1), 10);
  else
    dia = parseInt (cadena.substring(0,2), 10);

  if (cadena.charAt(3) == '0' && 
      (cadena.charAt(4) == '8' || cadena.charAt(4) == '9'))
    mes = parseInt (cadena.charAt(4), 10);
  else
    mes = parseInt (cadena.substring(3,5), 10);

  anio = parseInt (cadena.substring(6,10), 10);

  if (!dia || !mes || !anio)
    error = 1;
  else
    if (mes < 0 || mes > 12)
      error = 2;
    else
      if (mes == 2 && (dia > 29 || dia < 0))
        error = 3;
      else
        if ((mes == 1 || mes == 3 || mes == 5 || mes == 7 ||
             mes == 8 || mes == 10 || mes == 12) && (dia < 0 || dia > 31))
          error = 4;
        else
          if ((mes == 2 || mes == 4 || mes == 6 || mes == 9 ||
               mes == 11) && (dia < 0 || dia > 30))
            error = 5;
  if (error != 0)
    alert ("La fecha no es correcta: el d" + unescape("%ED") + "a no se corresponde con el mes.");
  return (error == 0);
}
//--------------------------------------------------------------------
//CP
//--------------------------------------------------------------------
function ValidarCP(campo) {
	cp = campo.value;
	if (isNaN(cp) == false)
		if (cp.length == 5) 
			if ((cp.substr(0,2)*1 > 0 ) && (cp.substr(0,2)*1 <= 52 ) && (cp.substr(2,3)*1 > 0))
				return true;
	alert('El código postal no es correcto');
	campo.focus();
	return false;
}
//--------------------------------------------------------------------
//QUERYSTRING
//--------------------------------------------------------------------
function EliminaParametro(querystring,parametro){
	querystring=querystring.toLowerCase();
	parametro=parametro.toLowerCase();
	var inicioParametro=querystring.indexOf("&"+parametro+"=");
	if(inicioParametro!=-1){
		var finalParametro=querystring.indexOf("&",inicioParametro+1);
		if(finalParametro==-1){
			finalParametro=querystring.length;
		}
		var parametroAnterior=querystring.substring(inicioParametro, finalParametro)
		querystring=querystring.replace(parametroAnterior,"")
	}	
	return querystring;
}
