// FUNCIONES COMUNES

/* Dado un objeto y un className, comprimimos todos los objetos con dicho class */
function inicio(objeto,clase,posicion)
{

	var capas = document.getElementsByTagName(objeto);
	var nCapas = capas.length;	
	for (i=0;i<nCapas;i++)
	{	
		if (capas[i].className == clase)
		{
			//capas[i].style.position = posicion;
			capas[i].style.display = "none";
		}
	}
}

/* Abrir Ventana */
function abrirVentana(url,ancho,alto)
{
	eval("window.open(url, 'ventana', 'toolbar=no, directories=no, location=no, status=no, menubar=no, resizable=no, scrollbars=yes, width="+ancho+", height="+alto+"')"); 
}

/* Función que muestra y oculta las pestañas */
function activarCaja(idNum)
{		
	var capas = document.getElementsByTagName("DIV");
	var nCapas = capas.length;
	var cont = 0;	
	for (i=0;i<nCapas;i++)
	{	
		if (capas[i].className == "displayBlock")
		{
			capas[i].style.display = "none";
			capas[i].className = "displayNone";
			cont++;
		}					
	}	
	var capa = eval("document.getElementById('caja"+idNum+"')");
	capa.style.display = "block";	
	capa.className = "displayBlock";
	var pestania = document.getElementsByTagName("SPAN");
	var nPestania = pestania.length;
	for(i=0;i<nPestania;i++)
	{
		if (pestania[i].className == "on")
		{
			pestania[i].className = "";
		}
	}		
	document.getElementById("mCaja"+idNum).className = "on"
}


/* Función que abre el tarificador de salud */
function abretarificadorsalud(objeto){
	if(objeto!=null)
		var url = document.getElementById(objeto).value;
	else
		var url = document.getElementById("seguro").value;
	nombreDonde = url.substring(0,url.indexOf("|"));
	caracteristicas = url.substring(url.indexOf("|")+1);	
	/*for(i=0 ;i<document.getElementById("seguro").length;i++){
		if(document.getElementById("seguro")[i].selected){
			var caracteristicas = document.getElementById("seguro")[i].sz;
		}
	}*/	
	if(nombreDonde != "seleccione")
		eval("window.open(nombreDonde, 'ventana', 'toolbar=no, directories=no, location=no, status=no, menubar=no, resizable=yes, scrollbars=yes, width="+900+", height="+700+"')");
		//window.location.href=nombreDonde;
 }
 
 
 
 /* dice si cadena es texto no vacio o no                                     */
function vacio(cadena)
  {                                    // DECLARACION DE CONSTANTES
    var blanco = " \n\t" + String.fromCharCode(13); // blancos
                                       // DECLARACION DE VARIABLES
    var i;                             // indice en cadena
    var es_vacio;                      // cadena es vacio o no
    for(i = 0, es_vacio = true; (i < cadena.length) && es_vacio; i++) // INICIO
      es_vacio = blanco.indexOf(cadena.charAt(i)) != - 1;
    return(es_vacio);
  }


/* dice si cadena es un email (alfanum@alfanum.alfanum[.alfanum]) o no, don- */
/* de alfanum son caracteres alfanumericos u otros                           */
function validaEmail(cadena, otros)
  {                                    // DECLARACION-INICIALIZACION VARIABLES
    var i, j;                          // indice en cadena
    var es_email = 0 < cadena.length;  // cadena es email o no
    i = salta_alfanumerico(cadena, 0, otros); // INICIO
    if(es_email = 0 < i)               // lee "alfanum*"
      if(es_email = (i < cadena.length))
        if(es_email = cadena.charAt(i) == '@') // lee "alfanum@*"
          {
            i++;
            j = salta_alfanumerico(cadena, i, otros);
            if(es_email = i < j)       // lee "alfanum@alfanum*"
              if(es_email = j < cadena.length)
                if(es_email = cadena.charAt(j) == '\.')
                  {                    // lee "alfanum@alfanum.*"
                    j++;
                    i = salta_alfanumerico(cadena, j, otros);
                    if(es_email = j < i) // lee "alfanum@alfanum.alfanum*"
                      while(es_email && (i < cadena.length))
                        if(es_email = cadena.charAt(i) == '\.')
                          {
                            i++;
                            j = salta_alfanumerico(cadena, i, otros);
                            if(es_email = i < j) // lee "alfanum@alfanum.alfanum[.alfanum]*"
                              i = j;
                          }
                  }
          }
    return(es_email);
  }


/* salta caracteres alfanumericos y otros a partir de  cadena[i]  y  da  si- */
/* guiente posicion                                                          */
function salta_alfanumerico(cadena, i, otros)
  {                                    // DECLARACION DE VARIABLES
    var j;                             // indice en cadena
    var car;                           // caracter de cadena
    var alfanum;                       // cadena[j] es alfanumerico u otros
    for(j = i, alfanum = true; (j < cadena.length) && alfanum; j++) // INICIO
      {
        car = cadena.charAt(j);
        alfanum = alfanumerico(car) || (otros.indexOf(car) != -1);
      }
    if(!alfanum)                       // lee "alfanumX"
      j--;
    return(j);
  }
  
/* dice si car es alfanumerico                                               */
function alfanumerico(car)
  {
    return(alfabetico(car) || numerico(car));
  }


/* dice si car es alfabetico                                                 */
function alfabetico(car)               // DECLARACION DE CONSTANTES
  {                                    // caracteres alfabeticos
    var alfa = "ABCDEFGHIJKLMNOPQRSTUWXYZabcdefghijklmnopqrstuvxyz";
    return(alfa.indexOf(car) != - 1);  // INICIO
  }


/* dice si car es numerico                                                   */
function numerico(car)
  {                                    // DECLARACION DE CONSTANTES
    var num = "0123456789";            // caracteres numericos
    return(num.indexOf(car) != - 1);   // INICIO
  }
 
/* Función que muestra el NIF */
 function mostrarNIF()
 {
	 var nif = document.getElementById("nif");
	 var EtiqNif = document.getElementById("etiqNif");
	 nif.className = "W25";
	 EtiqNif.className = "";
 }
 
/* Función que oculta el NIF */
 function ocultarNIF()
 {
	 var nif = document.getElementById("nif");
	 var EtiqNif = document.getElementById("etiqNif");
	 nif.className = "W25 displayNone";
	 EtiqNif.className = "displayNone";
 }
 
/* Función que muestra las preguntas */ 
 function mostrarPreguntas()
 {
 	var producto = document.getElementById("bloqueProducto");
    var fecha = document.getElementById("bloqueFecha");
    producto.className = "displayBlock";
    fecha.className = "displayBlock";
 }
 
 /* Función que muestra las preguntas */ 
 function ocultarPreguntas()
 {
 	var producto = document.getElementById("bloqueProducto");
    var fecha = document.getElementById("bloqueFecha");
    producto.className = "displayNone";
    fecha.className = "displayNone";
 }
 
 /* Función que muestra las preguntas */ 
 function activaBoton(objeto)
 { 	
 	if(objeto.enviar.disabled == false)
		objeto.enviar.disabled = true;
	else
		objeto.enviar.disabled = false;
 }
 
/* Función que oculta el NIF */
 function obligatorio(objeto)
 {
	 var respuesta = objeto.respuesta.value;
	 var asterisco1 = document.getElementById("emailObli");
	 var asterisco2 = document.getElementById("tefnObli");
	 if (respuesta == 1)
	 {
	 	asterisco1.className = "necesario";		
	 	asterisco2.className = "necesario displayNone";
	 }
	 else
	 {
		if (respuesta == 2)
		{
			asterisco1.className = "necesario displayNone";		
		 	asterisco2.className = "necesario"; 
		}
		else
		{
			asterisco1.className = "necesario displayNone";
			asterisco2.className = "necesario displayNone"
		}
	 }
 } 
 
 
// Función que valida si el valor que entra como parametro es numerico. 
function isNumericInteger(sText)
{
   var validChars = "0123456789";
   var isNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && isNumber == true; i++) 
   { 
   		Char = sText.charAt(i); 
      	if (validChars.indexOf(Char) == -1) 
        	isNumber = false;
   }
   return isNumber;
} 
 
 
/* Función que valida si es un CIF correcto */
function validarCIF(cif){
var par = 0;
var non = 0;
var letras = "ABCDEFGHJKLMNPRQSUVW";
var caracterControlLetra = "KPQS";
var caracterControlNum = "ABEH";
var i;
var parcial;
var control;
var controlLetra = "JABCDEFGHIJ";
var letraIni = cif.charAt(0);

if (cif.length!=9) {
   return false;
}
else
{
    if (letras.indexOf(letraIni.toUpperCase())==-1)
    {
       return false;
    }
    for (i=2;i<8;i+=2) {
        par = par + parseInt(cif.charAt(i));
    }

    for (i=1;i<9;i+=2) {
        var nn = 2 * parseInt(cif.charAt(i));
        if (nn > 9) nn = 1 + (nn-10);
        non = non + nn;
    }

    parcial = par + non;

    control = (10 - ( parcial % 10));


    if (caracterControlLetra.indexOf(letraIni.toUpperCase()) != -1)
    {
        // El caracter de control deberá ser una letra

        if (controlLetra.charAt(control) != cif.charAt(8).toUpperCase())
        {
           return false;
        }
    }
    if (caracterControlNum.indexOf(letraIni.toUpperCase()) != -1)
    {
        // El caracter de control deberá ser un número

        if (control != cif.charAt(8))
        {
            return false;
        }
    }
    if ((caracterControlLetra.indexOf(letraIni.toUpperCase()) == -1) && (caracterControlNum.indexOf(letraIni.toUpperCase()) == -1))
    {
        // En este caso el carácter de control puede ser una letra o un número

        if (control == 10)
        {
            control = 0;
        }
        if ((controlLetra.charAt(control) != cif.charAt(8).toUpperCase()) && (control != cif.charAt(8)))
        {
            return false;
        }
    }
}
return true;


}
 
/* Función que valida el NIF */
function esNIFCorrecto(nif){
  
   cadena="TRWAGMYFPDXBNJZSQVHLCKET";
  
    nif = nif.toUpperCase();
   //dado un NIF te devuelve si es o no correcto	
	
	ok = true;				//variable booleana que controla si hay algún error
	dni=nif.substring(0,nif.length-1);	//del NIF nos quedamos con el DNI
	if(!isNumericInteger(dni)){      
      ok = false;
   }else{
	
	dni=parseInt(dni,10);					//al convertirlo a entero, le quitamos los ceros de la izquierda
	posicion = dni % 23;

	letra=nif.charAt(nif.length-1);		//la letra que nos han pasado
	
	letraCorrecta = cadena.substring(posicion,posicion+1);	//la letra que debería ser para ese DNI

	if (dni > 99999999){ 
		ok = false;
	} else if((letra=="")||(!isValorAlfabetico(letra))){	  	    
		ok = false;
	} else if(letra!=letraCorrecta) {
		ok = false;
	}
 }
	if (ok) {
		return true;
	}else{
		//alert(txtError);
		return false;
	}
} 
 
 
 
 
 /* Función que valida el formulario */
 function validar(objeto)
 {
	var datoEmail = objeto.email.value;
	var datoNombre = objeto.nombre.value;
	var datoApellido = objeto.apellido.value;
	var datoNIF = objeto.nif.value;
	var datoTelfn = objeto.telfn.value;
	var datoProdto = objeto.producto.value;
	var capa = document.getElementById("capaMsg");  
	var parrafo1 = document.getElementById("msg1");
	var parrafo2 = document.getElementById("msg2");
	var parrafo3 = document.getElementById("msg3");
	var parrafo4 = document.getElementById("msg4");
	var parrafo5 = document.getElementById("msg5");
	var parrafo6 = document.getElementById("msg6");
	var parrafo7 = document.getElementById("msg7");
	var parrafo8 = document.getElementById("msg8");	
	var asterisco1 = document.getElementById("emailObli");
	var asterisco2 = document.getElementById("tefnObli");
	var producto = document.getElementById("bloqueProducto");	
	var nif_cif = document.getElementById("nif");
	var politica = document.getElementById("acepto");
	if (vacio(datoNombre))
	{
		capa.className = "cajaMsgB";		
		parrafo1.className = "displayBlock";
		objeto.enviar.disabled = true;
		objeto.acepto.checked = false;
	}
	else
	{
		if(vacio(datoApellido))
		{
			capa.className = "cajaMsgB";		
			parrafo2.className = "displayBlock";
			objeto.enviar.disabled = true;
			politica.checked = false;
		}
		else
		{	
			/* Si el NIF o CIF no es correcto*/
			if (nif_cif.className == "W25" && (!validarCIF(datoNIF) || !esNIFCorrecto(datoNIF)))
			{
				capa.className = "cajaMsgB";		
				parrafo6.className = "displayBlock";
				objeto.enviar.disabled = true;
				politica.checked = false;
			}
			else
			{
				/* Si el e-mail es obligatorio y es valido */
				if((asterisco1.className == "necesario" && vacio(datoEmail)) || !validaEmail(datoEmail, "-_"))
				{
					capa.className = "cajaMsgB";		
					parrafo3.className = "displayBlock";
					objeto.enviar.disabled = true;
					politica.checked = false;
				}
				else
				{
					/* Si el telefono es obligatorio y es valido */
					if((asterisco2.className == "necesario" && vacio(datoTelfn)) || !isNumericInteger(datoTelfn))
					{
						capa.className = "cajaMsgB";		
						parrafo4.className = "displayBlock";
						objeto.enviar.disabled = true;
						politica.checked = false;
					}
					else
					{						
						/* Si no han decidido si quieren solicitar presupuesto */
						if (!document.getElementsByName("presupto")[0].checked && !document.getElementsByName("presupto")[1].checked)
						{																
							capa.className = "cajaMsgB";		
							parrafo7.className = "displayBlock";
							objeto.enviar.disabled = true;
							politica.checked = false;
						}
						else
						{							
							/* Si no han elegido el producto */
							if(producto.className == "displayBlock" && datoProdto == 0)
							{
								capa.className = "cajaMsgB";		
								parrafo8.className = "displayBlock";
								objeto.enviar.disabled = true;
								politica.checked = false;
							}
							else
							{
								window.location = "contactoOK.html";
							}
						}
					}
				}
			}
		}
	}
 }

 
 
