/* funciones*/

function esVacio(s) {

	return ((s==null) || (s.length ==0));
}

function esBlanco (s) {
	var i;
	if (esVacio(s)) return true;
	for(i=0; i< s.length; i++) {
		var c=s.charAt(i);
		if (c!=' ' && c!='\t' && c!='\r' && c!='\n') 
         return false;
	}
	return true;
}
function esAlfabetico (s) {
	var i;
	if (esVacio(s)) return false;
	else {
		for(i=0;i< s.length; i++) {
			var c=s.charAt(i);
			if (((c>='a') && (c<='z')) || ((c>='A') && (c<='Z')))
				continue;
			else return false;
		}
		return true;
		}
}
function esEmail (s){
   var arroba = s.indexOf("@");
   if (arroba < 1) 
        return false;
   var otrarroba= s.substring(arroba+1).indexOf("@");
   if (otrarroba > 0)
		return false;
   if ((s.charAt(arroba+1)==".") || (s.charAt(arroba+1)==" ") ) 
   		return false;
   ultpunto=s.lastIndexOf(".");
   if ((ultpunto<(s.length-1)) && (ultpunto>2) && (esAlfabetico(s.substring(ultpunto+1))) )
		return true;
}
// esEntero devuelve true si la cadena es un número entero y no vacía
function esEntero (s) {
	var i;
	if (esVacio(s)) return false;
	else {
		for(i=0;i<s.length; i++) {
			var c=s.charAt(i);
			if ((c>='0') && (c<='9'))
				continue;
			else return false;
		}
		return true;
		}
}
////////////////////////////////////////////////////////////////
////                                                        ////
////           CaracterControl_NIF (nif)                    ////
////                                                        ////
////////////////////////////////////////////////////////////////
function CaracterControl_NIF (nif) {

var digito, resto,numero;
numero="";
	for(i=0;i<nif.length-1; i++) {
			digito=nif.charAt(i);
			
			if (esEntero (digito)){ 
				numero=numero.concat(digito);
				continue;				
			}
			else{
				return '-';
			}
		}
	
	resto = numero % 23;
		
	resto= resto +1;
	
	if (resto == 1){
		return 'T' ; }
	if (resto == 2){
		return 'R' ;}
	if (resto == 3){
		return 'W'; }	
	if (resto == 4){
		return 'A' ;}
	if (resto == 5){
		return 'G' ; }
	if (resto == 6){
		return 'M' ; }
	if (resto == 7){
		return 'Y' ;}
	if (resto == 8){
		return 'F' ; }
	if (resto == 9){
		return 'P' ; }
	if (resto == 10){
		return 'D' ;}
	if (resto == 11){
		return 'X' ;}
	if (resto == 12){
		return 'B';}
	if (resto == 13){
		return 'N'; }
	if (resto == 14){
		return 'J';}
	if (resto == 15){
		return 'Z';}
	if (resto == 16){
		return 'S';}
	if (resto == 17){
		return 'Q';}
	if (resto == 18){
		return 'V';}
	if (resto == 19){
		return 'H';}
	if (resto == 20){
		return 'L';}
	if (resto == 21){
		return 'C';}
	if (resto == 22){
		return 'K';}
	if (resto == 23){
		return 'E';}
	
	return '-';
	
}

function esNif(n){
	var primero, longitud, i, digito, ultimo, nif;
	primero= n.charAt(0);
	longitud = n.length;
	nif=n;
	if ((longitud != 9) && (esEntero(primero))){
		//El nif pasado en la variable "n" tiene menos de 9 dígitos
		//por tanto, se rellenan a "ceros" los huecos libres por la izquierda.
		if (longitud == 8){
			nif="0"+n;
		}
		if (longitud == 7){
			nif="0"+"0"+n;
		}
		if (longitud == 6){
			nif="0"+"0"+"0"+n;	
		}
		if (longitud == 5){
			nif="0"+"0"+"0"+"0"+n;
		}		
	}
	//si es un nif con 9 dígitos comprobamos que los ocho números sean "enteros"
	//luego comprobamos que el caracter de la posición "9" sea el correspondiente 
	//caracter de control, según fórmula del NIF.
	longitud = nif.length;
	for(i=0;i<longitud-1; i++) {
			var digito=nif.charAt(i);
			if (esEntero (digito)) 
				continue;
			else{
				
				return false;
			}
	}
	
	
	ultimo = nif.charAt(8);
	ultimo=ultimo.toUpperCase();//SE PASA LA LETRA A MAYUSCULAS SIEMPRE 
	
	if ((longitud==9) & (ultimo == CaracterControl_NIF (nif))){
		
		return true;
	}
	else
		return false;
		
		
}
////////////////////////////////////////////////////////////////
////                                                        ////
////           CaracterControl_CIF (cif, esNacional)        ////
////                                                        ////
////////////////////////////////////////////////////////////////

function CaracterControl_CIF (cif, esNacional) {

var digito,digito1, digito2, pi1, pi3, pi5, pi7, si1, si3, si5, si7, r ,r1, r2, modulo, complemento,resta;

	for(i=1;i<cif.length-1; i++) {
			digito=cif.charAt(i);
		if (esEntero (digito)){ 
				continue;				
		}
		else{
				return '-';
		}
	}
	
	var r1=0;
	for(i=1;i<cif.length-1; i++) {
			digito=cif.charAt(i);
					
			// calculamos en los pi los productos de los dígitos impares
			if (i==1){
					pi1= digito *2;
			}
			if (i==2){
					r1 += parseInt(digito);			
			}
			if (i==3){
					pi3 = digito *2;					
			}
			if (i==4){
					r1 += parseInt(digito);				  
			}
			if (i==5){
					pi5 = digito *2;
			}
			if (i==6){
					r1+= parseInt(digito);
			}
			if (i==7){
					pi7 = digito * 2;
					
			}
			
			continue;				
			}
			
			
		// en los "si" calculamos las suma en caso de que los productos impares sean >10
		
		if (pi1 >= 10 ) {
			digito1=pi1.toString().charAt(0);
			digito2=pi1.toString().charAt(1);
			si1=parseInt(digito1)+ parseInt(digito2);
			
		}
		else{
			si1=parseInt(pi1);
		}
		
		if (pi3 >= 10 ) {
			digito1=pi3.toString().charAt(0);
			digito2=pi3.toString().charAt(1);
			si3=parseInt(digito1)+ parseInt(digito2);
		}
		else{
			si3=parseInt(pi3);
		}
		if (pi5 >= 10 ) {
			digito1=pi5.toString().charAt(0);
			digito2=pi5.toString().charAt(1);
			si5=parseInt(digito1)+ parseInt(digito2);
		}
		else{
			si5=parseInt(pi5);
		}
		
		if (pi7 >= 10 ) {
			digito1=pi7.toString().charAt(0);
			digito2=pi7.toString().charAt(1);
			si7=parseInt(digito1)+ parseInt(digito2);
		}
		else{
			si7=parseInt(pi7);
		}
		r2 =si1+si3+si5+si7;
		
		r = r1+r2;
		modulo = r % 10;
		resta = 10 - modulo;
		complemento = resta % 10;
		
		if (esNacional){
			return complemento;
		}
		if (complemento == 1) {
			return 'A';
		}
		if (complemento == 2) {
			return 'B';
		}
		if (complemento == 3) {
			return 'C';
		}
		if (complemento == 4) {
			return 'D';
		}
		if (complemento == 5) {
			return 'E';
		}
		if (complemento == 6) {
			return 'F';
		}
		if (complemento == 7) {
			return 'G';
		}
		if (complemento == 8) {
			return 'H';
		}
		if (complemento == 9) {
			return 'I';
		}
		if (complemento == 0) {
			return 'J';
		}
			
}
function esCif(c){
var longitud, primero, ultimo_digito, ultimo_digito_Up;
	longitud = c.length;
	if (longitud != 9) {
		return false;
		}
	else {
		
		ultimo_digito = c.charAt(8);
		if (!(esEntero(ultimo_digito))){
			ultimo_digito_Up = ultimo_digito.toUpperCase();
			
		}
		primero = c.charAt(0);
		primero=primero.toUpperCase();//SE PASA LA LETRA PRIMERA A MAYUSCULAS
		 
	}
	// se trata de un cif NACIONAL:
	if (ultimo_digito == CaracterControl_CIF (c,true)){
		
		if ( (primero=="A") || (primero == "B")|| (primero == "C")|| (primero == "D")||
			 (primero == "E")|| (primero == "F")|| (primero == "G")|| (primero == "H")){
			return true;
		}
	}	
	//se trata de un cif extranjero
	if ( (primero=="A") || (primero == "B")|| (primero == "C")|| (primero == "D")||(primero == "E")|| (primero == "F")|| (primero == "G")|| (primero == "H")){
		if((ultimo_digito_Up=="A") || (ultimo_digito_Up== "B")|| (ultimo_digito_Up == "C")|| (ultimo_digito_Up == "D")||(ultimo_digito_Up == "E")|| (ultimo_digito_Up == "F")|| (ultimo_digito_Up == "G")|| (ultimo_digito_Up == "H")|| (ultimo_digito_Up == "I")|| (ultimo_digito_Up == "J")){
			if (ultimo_digito_Up == CaracterControl_CIF (c,false)){	
				return true;									 
			}
		}
	}									 
											 
	//se trata de Organismos autónomos
	if (primero=="S"){
		if((ultimo_digito_Up=="A") || (ultimo_digito_Up== "B")|| (ultimo_digito_Up == "C")|| (ultimo_digito_Up == "D")||(ultimo_digito_Up == "E")|| (ultimo_digito_Up == "F")|| (ultimo_digito_Up == "G")||
			(ultimo_digito_Up == "H")|| (ultimo_digito_Up == "I")|| (ultimo_digito_Up == "J")){
			if (ultimo_digito_Up == CaracterControl_CIF (c,false)){
				return true;
			}
		}	
	}
			
	if ((primero == "P") || (primero == "Q")){ 
		if ((ultimo_digito_Up=="A") || (ultimo_digito_Up== "B")|| (ultimo_digito_Up == "C")|| (ultimo_digito_Up == "D")||(ultimo_digito_Up == "E")|| (ultimo_digito_Up == "F")|| (ultimo_digito_Up == "G")||
			(ultimo_digito_Up == "H")|| (ultimo_digito_Up == "I")|| (ultimo_digito_Up == "J")){
			if (ultimo_digito_Up == CaracterControl_CIF (c,false)){
				return true;
			}
		}
	}	
	return false;	
										
}

/* ventanas*/


//Función que abre la ventana 

function abrir_otra(p,x,y,t,l){
ventana=window.open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width='+x+',height='+y+',top='+t+',left='+l+' ')
ventana.focus();
}
//Función que abre la ventana 

function completa(p,x,y,t,l){
ventana=window.open(p,'ENTERA','scrollbars=yes,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,resizable=yes,width='+x+',height='+y+',top='+t+',left='+l+' ')
ventana.focus();
}

//Función que abre la ventana de servicios

function abrir(p){
ventana=window.open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=430,height=480,top=50,left=50')
                ventana.focus();
}

//Función que abre la ventana de ayuda

function abrir_ayuda(p){
ventana=window.open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=600,height=395,top=90,left=50')
                ventana.focus();
}

//Función que abre la ventana pequeña

function abrir_p(p,a,b){
ventana=window.open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width='+ a + ',height=' + b + ',top=50,left=100')
                ventana.focus();
}

//Función que abre la ventana detalle pedido

function abrir_det(p){
ventana=window.open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=600,height=400,top=100,left=100')
                ventana.focus();
}


//Función que abre la ventana con div

function abrir_en_div(id,p){

var netscape = (document.layers)? true : false;
	if (netscape) {
		ventana=document.layers[id].open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=400,height=400,top=150,left=200')
        ventana.focus();
    } else {
		ventana=document.all[id].open(p,'NUEVA','scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,width=400,height=400,top=150,left=200')
        ventana.focus();       
	}
}

/* hace visible o no el menú clientes*/
clientes= function () {
	
	if (document.getElementById('area_clientes').style.visibility == 'hidden') {
		document.getElementById('area_clientes').style.visibility='visible';
		 }
	else {
		document.getElementById('area_clientes').style.visibility='hidden';
		 }	
}
if (window.attachEvent) window.attachEvent("onload", clientes);

/* Para la identificación*/
function valida() 
{
	if (esBlanco(document.getElementById('form_clientes').cod_cli.value)) 
	{
		alert('Debe introducir un código que le identifique como cliente.');
		document.getElementById('form_clientes').cod_cli.focus();
		return false;
	}
	if (esBlanco(document.getElementById('form_clientes').pass.value)) 
	{
		alert('Debe introducir su clave.');
		document.getElementById('form_clientes').pass.focus();
		return false;
	}

return true;

}


function identifica() {
		if (valida()){ 
			document.getElementById('form_clientes').action="validar_cliente.asp?valida=home";
			document.getElementById('form_clientes').submit();
			
		}
}


/* Para el buscador*/
function valida_buscador() 
{
	if (esBlanco(document.getElementById('FORMULARIO').text_busca.value)) 
	{
		alert('Debe introducir un texto por el que buscar.');
		document.getElementById('FORMULARIO').text_busca.focus();
		return false;
	}
return true;
}


function aceptar_buscador() {
		if (valida_buscador()){ 
			document.getElementById('FORMULARIO').action="res_busca.asp";
			document.getElementById('FORMULARIO').submit();
			
		}
}

/* Para el formulario de contacto*/

function aceptar_contacto() {
	if (esBlanco(document.getElementById('contacto').email.value))
	{
		alert('Recuerde indicarnos su correo para contactar con usted.');
		document.getElementById('contacto').email.focus ();
	}
	else
	{
		if (!esEmail(document.getElementById('contacto').email.value))
		{
			alert('Debe introducir un e-mail válido.');
			document.getElementById('contacto').email.focus ();
		}
		else
		{
		alert("Su correo ha sido enviado correctamente.\n\n Gracias por su colaboración ..");
		if (document.getElementById('contacto').consiente.checked)
			{
			document.getElementById('contacto').consiente.value="S";
			}
		document.getElementById('contacto').action="envio_formu.asp";
		document.getElementById('contacto').submit();
		}
	}	
}
/* Para el formulario de alta de datos cliente*/
function valida_addclientes() 
{
	if (esBlanco(document.getElementById('form_alta_clientes').empresa.value)) 
	{
		alert('Debe introducir el nombre de su Óptica.');
		document.getElementById('form_alta_clientes').empresa.focus ();
		return false;
	}

	if (esBlanco(document.getElementById('form_alta_clientes').nombre.value))
	{
		alert('Debe indicarnos una razón social correcta.');
		document.getElementById('form_alta_clientes').nombre.focus ();
		return false;
	}

	if (esBlanco(document.getElementById('form_alta_clientes').email.value)) 
	{
		alert('Debe indicarnos su e-mail.');
		document.getElementById('form_alta_clientes').email.focus ();
		return false;
	}

	if (!esEmail(document.getElementById('form_alta_clientes').email.value)) 
	{
		alert('Debe introducir un e-mail válido.');
		document.getElementById('form_alta_clientes').email.focus ();
		return false;
	}

	if (esBlanco(document.getElementById('form_alta_clientes').cif.value))
	{
		alert('Debe indicarnos su cif/nif.');
		document.getElementById('form_alta_clientes').cif.focus ();
		return false;
	}

	if (!esEntero(document.getElementById('form_alta_clientes').telefono.value)) 
	{
		alert('Debe indicarnos su teléfono.');
		document.getElementById('form_alta_clientes').telefono.focus ();
		return false;
	}

return true;
}

function aceptar_addclientes() {
		
		if (valida_addclientes()){ 
			if (document.getElementById('form_alta_clientes').consiente.checked)
			{
				document.getElementById('form_alta_clientes').consiente.value="S";
			}
			document.getElementById('form_alta_clientes').action="_addcliente.asp";
			document.getElementById('form_alta_clientes').submit();
		}
}
/* Para el formulario de modificacion de datos cliente*/

function valida_modclientes() 
{
	if (esBlanco(document.getElementById('mod_clientes').empresa.value)) 
	{
		alert('Debe introducir el nombre de su Óptica.');
		document.getElementById('mod_clientes').empresa.focus ();
		return false;
	}

	if (esBlanco(document.getElementById('mod_clientes').nombre.value))
	{
		alert('Debe indicarnos una razón social correcta.');
		document.getElementById('mod_clientes').nombre.focus ();
		return false;
	}

	if (esBlanco(document.getElementById('mod_clientes').email.value)) 
	{
		alert('Debe indicarnos su e-mail.');
		document.getElementById('mod_clientes').email.focus ();
		return false;
	}

	if (!esEmail(document.getElementById('mod_clientes').email.value)) 
	{
		alert('Debe introducir un e-mail válido.');
		document.getElementById('mod_clientes').email.focus ();
		return false;
	}

	if (esBlanco(document.getElementById('mod_clientes').cif.value))
	{
		alert('Debe indicarnos su cif/nif.');
		document.getElementById('mod_clientes').cif.focus ();
		return false;
	}

	if (!esEntero(document.getElementById('mod_clientes').telefono.value)) 
	{
		alert('Debe indicarnos su teléfono.');
		document.getElementById('mod_clientes').telefono.focus ();
		return false;
	}

return true;
}

function aceptar_modclientes() {
		
		if (valida_modclientes()){ 
			if (document.getElementById('mod_clientes').consiente.checked)
			{
				document.getElementById('mod_clientes').consiente.value="S";
			}
			document.getElementById('mod_clientes').action="_modcliente.asp";
			document.getElementById('mod_clientes').submit();
		}
	

}

/* Para el formulario de clave perdida*/

function valida_clave_perdida() 
{

	if (esBlanco(document.getElementById('form_clave_perdida').cod_cli.value)) 
	{
		alert('Debe introducir un código que le identifique como cliente.');
		document.getElementById('form_clave_perdida').cod_cli.focus ();
		return false;
	}
	
	if ((!esNif(document.getElementById('form_clave_perdida').cif.value)) && (!esCif(document.getElementById('form_clave_perdida').cif.value)))
	{
		alert('Debe indicarnos un cif/nif correcto.');
		document.getElementById('form_clave_perdida').cif.focus ();
		return false;
	}

return true;
}

function aceptar_clave_perdida() {
		
		if (valida_clave_perdida()){ 
			document.getElementById('form_clave_perdida').action="_soliclave.asp";
			document.getElementById('form_clave_perdida').submit();
		}
}

