///// funciones genéricas
// ##################################################

function mayordeuncaracter(campo,name){
    if (campo.value.length < 1){
        alert("Por favor debe rellenar el campo \""+name+"\".");
        campo.focus();
        return (false);
    } else return (true);
}
function chequeacaracteres(campo,name){
    var checkOK = "ABCDEFGHIJKLMNÑQOPQRSTUVWXYZÁÉÍÓÚÜÀÈÌÒÙabcdefghijklmnñqopqrstuvwxyzáéíóúüàèìòù ";
    var checkStr = campo.value;
    var allValid = true;

    for (i = 0;  i < checkStr.length;  i++){
        ch = checkStr.charAt(i);
        for (j = 0;  j < checkOK.length;  j++) if (ch == checkOK.charAt(j)) break;
        if (j == checkOK.length){
            allValid = false;
            break;
        }
    }

    if (!allValid){
        alert("Escriba sólo letra caracteres en el campo \""+name+"\".");
        campo.focus();
        return (false);
    } else return (true);


}

function mayorquexcaracteres(campo,name,num){
    if (campo.value.length < num){
        alert("El campo \""+name+"\" debe de tener más de "+num+" caracteres");
        formulario.apellidos.focus();
        return (false);
    } else return (true);
}

function emailvalido(campo,name){
    if ((campo.value.indexOf ('@', 0) == -1)||(campo.value.length < 5)) { 
        alert("Debes escribir una dirección de e-mail válida en el campo \""+name+"\"."); 
        campo.focus();
        return (false); 
    } else return (true);
}

function telefonovalido(campo,name){
    if (campo.value.length < 6) { 
        alert("Debes escribir un teléfono válido en el campo \""+name+"\"."); 
        campo.focus();
        return (false); 
    } else  return (true);
}


///// funciones propias del fomulario de cita previa
// ##################################################

function cambiaSemana(formulario,sgct_daytime)
{
    doSubmit=0;
	
    //alert("name: "+formulario.sgct_name.value+" dni: "+formulario.sgct_dni.value+" email:"+formulario.sgct_email.value);
    //alert("daytime: "+sgct_daytime);

    if (mayordeuncaracter(formulario.sgct_name,"Nombre y apellidos"))
    {
        if (mayordeuncaracter(formulario.sgct_dni,"DNI"))
        { 
            if (compruebaIntroDNI(formulario))
            {

                if (formulario.sgct_telefono.value.length > 0)
                {
                    if (telefonovalido(formulario.sgct_telefono,"teléfono")) doSubmit=1; else doSubmit=0;
                } else doSubmit=1;
            
                if (doSubmit==1) {
                    if (formulario.sgct_email.value.length > 0)
                    {
                        if (emailvalido(formulario.sgct_email,"email")) doSubmit=1; else doSubmit=0;
                    } else doSubmit=1;
                }
            } else doSubmit=0;
            
        } else doSubmit=0;
    } else doSubmit=0;
    
    
    
    if (doSubmit==1) {
        document.main.sgct_daytime.value=sgct_daytime;
        formulario.submit();
    }
}


function reservaCita(formulario,sgct_time)
{
    doSubmit=0;
	
    //alert("name: "+formulario.sgct_name.value+" dni: "+formulario.sgct_dni.value+" email:"+formulario.sgct_email.value);
    //alert("daytime: "+sgct_daytime);

    if (mayordeuncaracter(formulario.sgct_name,"Nombre y apellidos"))
    {
        if (mayordeuncaracter(formulario.sgct_dni,"DNI"))
        { 
            if (compruebaIntroDNI(formulario))
            {
            
                if (formulario.sgct_telefono.value.length > 0)
                {
                    if (telefonovalido(formulario.sgct_telefono,"teléfono")) doSubmit=1; else doSubmit=0;
                } else doSubmit=1;
            
                if (doSubmit==1) {
                    if (formulario.sgct_email.value.length > 0)
                    {
                        if (emailvalido(formulario.sgct_email,"email")) doSubmit=1; else doSubmit=0;
                    } else doSubmit=1;
                }
            } else doSubmit=0;
        } else doSubmit=0;
    } else doSubmit=0;

    if (doSubmit==1) {
        formulario.sgct_time.value=sgct_time;
	formulario.submit(); 
	return true; 
    } else return false;
	
}

function compruebaIntroDNI(formulario)
{
    if (formulario.sgct_dni.value)
    {    
	var checkOK = "1234567890TRWAGMYFPDXBNJZSQVHLCKEUtrwagmyfpdxbnjzsqvhlckeu";
	var checkStr = formulario.sgct_dni.value;
	var allValid = true;

	var checkStr2 = checkStr;



	for (i = 0;  i < checkStr.length;  i++){
            ch = checkStr.charAt(i);
            for (j = 0;  j < checkOK.length;  j++) if (ch == checkOK.charAt(j)) break;
            if (j == checkOK.length){
                allValid = false;
                break;
            }
	}

	if (!allValid){
            alert("Escriba el DNI o Tarjeta de Residencia\n-sin signos de puntuación\n-sin espacios \n-sin guiones. \n\n Ejemplos: 12345678A ó X12345678S");
            formulario.sgct_dni.focus();
            return (false);
	} else {
            var checkOK1 = "1234567890XxYyZz";
            var checkOK2 = "TRWAGMYFPDXBNJZSQVHLCKEUtrwagmyfpdxbnjzsqvhlckeu";
            var allValid1 = true;
            var finNumber = true;
            var number = "";
            var letra = "0";
            var lu = "-";
            var ld = "-";
            var dni = 0;
            
            for (i = 0;  i < checkStr.length;  i++){
                finNumber = true;
                ch = checkStr.charAt(i);
                if (i == 0) {
                    for (j = 0;  j < checkOK1.length;  j++) if (ch == checkOK1.charAt(j)) break;
                    if (j == checkOK1.length){
                        allValid1 = false;
                        break;
                    }
                    if (allValid1 && (ch != "X" && ch != "x" && ch != "Y" && ch != "y" && ch != "Z" && ch != "z")){
                        number = ch;
                    }
                } else {
                    for (j = 0;  j < checkOK2.length;  j++) if (ch == checkOK2.charAt(j)) break;
                    if (j == checkOK2.length) finNumber = false; 
                    if (finNumber){
                        letra = ch;
                        //dni=parseInt(number);

						var primc = checkStr2.substr(0,1);

						if(primc == "Y" || primc == "y")
							number = ("1" + checkStr2.substr(1,(checkStr2.length-2)));

						if(primc == "Z" || primc == "z")
							number =  ("2" + checkStr2.substr(1,(checkStr2.length-2)));

						dni=Number(number);

                        if (dni > 0 && dni < 99999999) {
                            resto = dni % 23;
                            switch(resto) {
                                case 0: lu="T"; ld="t"; break;
                                case 1: lu="R"; ld="r"; break;
                                case 2: lu="W"; ld="w"; break;
                                case 3: lu="A"; ld="a"; break;
                                case 4: lu="G"; ld="g"; break;
                                case 5: lu="M"; ld="m"; break;
                                case 6: lu="Y"; ld="y"; break;
                                case 7: lu="F"; ld="f"; break;
                                case 8: lu="P"; ld="p"; break;
                                case 9: lu="D"; ld="d"; break;
                                case 10: lu="X"; ld="x"; break;
                                case 11: lu="B"; ld="b"; break;
                                case 12: lu="N"; ld="n"; break;
                                case 13: lu="J"; ld="j"; break;
                                case 14: lu="Z"; ld="z"; break;
                                case 15: lu="S"; ld="s"; break;
                                case 16: lu="Q"; ld="q"; break;
                                case 17: lu="V"; ld="v"; break;
                                case 18: lu="H"; ld="h"; break;
                                case 19: lu="L"; ld="l"; break;
                                case 20: lu="C"; ld="c"; break;
                                case 21: lu="K"; ld="k"; break;
                                case 22: lu="E"; ld="e"; break;
                                case 23: lu="U"; ld="u"; break;
                            }
                        } 
                    } else {
                        number = number + ch;
                    }
                    
                }
            }
            if ((letra != lu) && (letra != ld)){
                allValid1 = false;
            };
            //alert("ahora comprobamos numero:"+ number + "\nletra: " + letra + "\nletra calculada" + lu + " " + ld);
            if (!allValid1){
                alert("Escriba el DNI o Tarjeta de Residencia Válidos\n\n Ejemplos: 12345678A ó X12345678S");
                formulario.sgct_dni.focus();
                return (false);
            } else return(true);
        }
    } else return false;
}

function consulte_resultados(form) {

	doSubmit=0;
	
	if (mayordeuncaracter(form.sgct_dni,"DNI o Tarjeta Residencia")) { 
		if (compruebaIntroDNI(form)) {
			if (mayordeuncaracter(form.sgct_sol,"Número de solicitud"))  
				doSubmit=1;
			else 
				doSubmit=0;
		} else doSubmit=0;
    } else doSubmit=0;

    if (doSubmit==1) {
		form.submit(); 
		return true; 
    } else return false;

}
