function abilita() {
	if ( document.aol.ct.checked ) {
	     document.aol.ng.value="1";
	}
}

function checkNum( obj , valore ) {
  var num = obj.value;
  if ( num == "" ) return false;
  for( var i = 0 ; i < num.length ; i++) {
    if ( ( num.charAt(i) < '0' ) || ( num.charAt(i) > '9' ) ) {
      alert("Il campo '"+valore+"' deve contenere solo numeri!");
      seleziona( obj );
      // break;
      return true;
    }
  }
  return false;
}

function checkLet( obj , valore ) {
  num = obj.value;
  if ( num == "" ) return true;
  for ( var i=0; i < num.length; i++) {
    if ( ( num.charAt(i) >= '0' ) && ( num.charAt(i) <= '9' ) ) {
      alert("Il campo '"+valore+"' non deve contenere numeri!");
      seleziona(obj);
      // break;
      return true;
    }
  }
  return false;
}

function seleziona( obj ){
  obj.focus();
  obj.select();
}

function checkRadio( obj ) {
  lun = obj.length;
  for( var i=0; i<lun; i++) {
    if ( obj[i].checked ) {
      return true;
    }
  }
  return false;
}

function selezionaradio( obj ){
  for (i=0;i<obj.length;i++){
	if (obj[i].checked==false)
	obj[i].focus();
  }
}

function replaceAll(Source,stringToFind,stringToReplace){
	var temp = Source;
	var index = temp.indexOf(stringToFind);
	while(index != -1){
	   temp = temp.replace(stringToFind,stringToReplace);
	   index = temp.indexOf(stringToFind);
    }
    return temp;
}

// alert ("L'inserimento dell'indirizzo e-mail è obbligatorio.\n\nLa invitiamo a
// compilare attentamente questo campo,\nindispensabile al fine di poterle
// comunicare informazioni\nutili per la sua operatività attraverso il servizio
// We@bank.");
function checkMail(input){	
	var inputvalue = input.value.toLowerCase();
	var pattern = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;		//migliore
    if(!pattern.test(inputvalue)){         
    	alert ("L'inserimento dell'indirizzo e-mail è obbligatorio.\n\nLa invitiamo a compilare attentamente questo campo,\nindispensabile al fine di poterle comunicare informazioni\nutili per la sua operatività attraverso il servizio We@bank.");
    	seleziona(input);
		return true;   
    }else return false;
}

function invia(url, mydate, controlloCell) {
	
	with (document.aol){
		
		var errore = false;
	
		if ( nome_int1.value == "" ) {
	      alert("Indicare il nome dell'Intestatario");
	      seleziona( nome_int1 );
	      return;
	      
	    } else if (nome_int1.value.indexOf("@") != -1){
	    	alert("Non è consentito utilizzare il carattere @ nel nome");
		    seleziona( nome_int1 );
		    return;
		    
	    } else {
	      errore = checkLet( nome_int1 , 'Nome' );
	      if ( errore )  return;
	    }
		
	    if (cognome_int1.value == "") {
	      alert("Indicare il cognome dell'Intestatario");
	      seleziona( cognome_int1 );
	      return;
	      
	    } else if (cognome_int1.value.indexOf("@") != -1){
	    	alert("Non è consentito utilizzare il carattere @ nel cognome");
		    seleziona( nome_int1 );
		    return;
		    
	    } else {
	      errore = checkLet( cognome_int1 , 'Cognome' );
	      if ( errore )  return;
	    }
	    
	    chk = checkRadio( sesso_int1 );
	    if ( chk == false ) {
	      alert ("Indicare il sesso dell'Intestatario");
	      selezionaradio(sesso_int1);
	      return;
	    }

	    
	    if ( gg_nascita_int1.value == "" ) {
	      alert ("Indicare il giorno di nascita dell'Intestatario");
	      seleziona( gg_nascita_int1 );
	      return;
	    } else {
	      errore = checkNum( gg_nascita_int1 , 'Giorno di nascita' );
	      if ( errore )  return;
	    }
	    
	    if ( mm_nascita_int1.value == "" ) {
	      alert ("Indicare il mese di nascita dell'Intestatario");
	      seleziona( mm_nascita_int1 );
	      return;
	    } else {
	      errore = checkNum( mm_nascita_int1 , 'Mese di nascita' );
	      if ( errore )  return;
	    }
	    
	    if ( aa_nascita_int1.value == "" ) {
	      alert ("Indicare l'anno di nascita dell'Intestatario");
	      seleziona( aa_nascita_int1 );
	      return;
	    } else {
	      errore = checkNum( aa_nascita_int1 , 'Anno di nascita' );
	      if ( errore )  return;
	    }
	    
	    errore = ctrlData( aa_nascita_int1 , mm_nascita_int1 , gg_nascita_int1 );
	    if ( errore )  return;
	
	    errore = ctrlDataNascita( aa_nascita_int1 , mm_nascita_int1 , gg_nascita_int1, "primo" );
	    if ( errore )  return;
	    
	    
	    if ( cod_fiscale_int1.value == "" ) {
	      alert ("Indicare il codice fiscale dell'Intestatario");
	      seleziona( cod_fiscale_int1 );
	      return;
	    } else {

	      var msgFis1 = ControllaCF(cod_fiscale_int1.value);
		  if (msgFis1!=""){
		  	alert(msgFis1);
		  	seleziona( cod_fiscale_int1 );
		  	return;
		  }
	      var sex1='M';
	      if (sesso_int1[1].checked) sex1='F';
	      var DataNascita1 = gg_nascita_int1.value+'/'+mm_nascita_int1.value+'/'+aa_nascita_int1.value;
	      if (!verificaCodFis(cod_fiscale_int1.value, cognome_int1.value, nome_int1.value, DataNascita1, sex1, 'primo')){
	      	return;
	      }
		
	    }    

	    prefisso_3_int1.value = trim(prefisso_3_int1.value);
	    telefono_3_int1.value = trim(telefono_3_int1.value);
	    if (controlloCell || (prefisso_3_int1.value != "" || telefono_3_int1.value != "" || operatore_int1.value!="")){
		    if (prefisso_3_int1.value == ""){
		    	alert ("E' necessario inserire il prefisso del numero di cellulare");
		    	seleziona( prefisso_3_int1 );
		    	return;
		    }
		    
	    	if ( prefisso_3_int1.value != "" ) {
				errore = checkNum( prefisso_3_int1 , 'prefisso del cellulare' );
				if ( errore ) return;
				if ( prefisso_3_int1.value.length != 3 ) {
					alert("Il prefisso del numero di cellulare deve essere di 3 cifre");
					seleziona( prefisso_3_int1 );
					return;
				}
			}	    
		    
		    if (telefono_3_int1.value == ""){
		    	alert ("E' necessario inserire il numero del cellulare");
		    	seleziona( telefono_3_int1 );
		    	return;
		    }
		    
		    if ( telefono_3_int1.value != "" ) {
				errore = checkNum( telefono_3_int1 , 'numero di cellulare' );
				if ( errore ) return;
				if ( telefono_3_int1.value.length != 7 &&  telefono_3_int1.value.length != 6) {
					alert("Il numero di cellulare deve essere di 6 o 7 cifre");
					seleziona( telefono_3_int1 );
					return;
				}
			}
		    
		    if (operatore_int1.value==""){
		    	alert ("E' necessario indicare l'operatore");
		    	operatore_int1.focus();
		    	return;
		    }
	    }
	    
	    if ( mail_int1.value == "" ) {
	      alert ("L'inserimento dell'indirizzo e-mail è obbligatorio.\n\nLa invitiamo a compilare attentamente questo campo,\nindispensabile al fine di poterle comunicare informazioni\nutili per la sua operatività attravervo il servizio We@bank.");
	      seleziona( mail_int1 );
	      return;
	    } else {
	      errore = checkMail( mail_int1 );
	      if ( errore )  return;
	    }
	    
	    if (errore) return;
		
		if (checkMaggiorenne(document.aol.aa_nascita_int1.value, document.aol.mm_nascita_int1.value, document.aol.gg_nascita_int1.value)){
			alert("Per essere intestatari del conto è necessario essere maggiorenni");
			return;
		}
		
		
		
		   if(!AdeVer.validaAdeverAolInt0()){
			alert("Compilare tutti i campi della normativa antiriciclaggio");
			usoConto.focus();
			return;
		    }
		
		
		if(cod_promotore.value != null && cod_promotore.value != ''){
		    var value = cod_promotore.value.toUpperCase();
		    var onlyNumber = /^\d+$/;
		    
		    if(value.indexOf('PF') == -1){
			if(!onlyNumber.test(cod_promotore.value)){
			    alert('Il codice promotore inserito non è formalmente corretto');
			    cod_promotore.focus();
			    return;
			}
		    } else if(value.indexOf('PF') != 0){
			alert('Il codice promotore inserito non è formalmente corretto');
			cod_promotore.focus();
			return;
		    }  
		}
    
    }

	document.aol.oksub0.value="ok";
	
	with (document.aol){		
		// trimmo a sx e dx il codice convenzione
		cod_prom_conv.value = trim(cod_prom_conv.value);
	}
	
	document.aol.submit();
}

function annullaCampi(){
	var form=document.getElementById("aol");
	// ripristino il default
	form.num_intestatari[0].checked=true;
	form.cod_prom_conv.value="";
	// form.ct.checked=false;
	
}


function trim(stringa){

    while (stringa.substring(0,1) == ' '){
        stringa = stringa.substring(1, stringa.length);    
    }    
    
    while (stringa.substring(stringa.length-1, stringa.length) == ' '){
        stringa = stringa.substring(0,stringa.length-1);
    }    
    
    return stringa;
}

/*
 * mi torna true se la data mydate è copresa tra start e finish
 */
function isDateBetween(start, finish, mydate){
	
	if (start<mydate && mydate<finish){
		return true;
	}
	return false;
		
}

function verificaCodFis(FisIns, Cognome, Nome, DataNascita, Sesso, numInt){

	var ret = true;
	
	FisIns = FisIns.toUpperCase();
	var first = FisIns.substring(0, 11);
	
	var fisCalc = CalcoloCodFis(Cognome, Nome, DataNascita, Sesso);
			
	if (first != fisCalc){
		ret = false;
		alert('Il codice fiscale del '+ numInt +' intestatario non è congruente con i dati inseriti');
		
		with (document.aol){
			// focus
			if (numInt == 'primo'){
				seleziona (cod_fiscale_int1);
			}else if (numInt == 'secondo'){
				seleziona (cod_fiscale_int2);
			}else{
				seleziona (cod_fiscale_int3);
			}
		}
		
	}
	
	return ret;
}

function CalcoloCodFis(Cognome, Nome, DataNascita, Sesso) {

	Cognome = Cognome.toUpperCase();
	Nome = Nome.toUpperCase();

	ggmmaa = DataNascita.split("/");

	Sesso = Sesso.toUpperCase();
	// CodiceComune = CodiceComune.toUpperCase();

// qui costruisco il codice
	TxtCodFis = "";
    
// RICAVO IL COGNOME (1-3)
	Vocali = "";
	Consonanti = "";
	for(var i=0; i<Cognome.length; i++) {
		a = Cognome.charAt(i);
		if (/[AEIOU]/.test(a)) Vocali += a;
		if (/[BCDFGHJKLMNPQRSTVWXYZ]/.test(a)) Consonanti += a;
	}
	Consonanti = (Consonanti+Vocali+"XXX").substr(0,3);
	TxtCodFis = Consonanti; 
    
// RICAVO IL NOME (4-6)
	Vocali = "";
	Consonanti = "";
	for(var i=0; i<Nome.length; i++) {
		a = Nome.charAt(i);
		if (/[AEIOU]/.test(a)) Vocali += a;
		if (/[BCDFGHJKLMNPQRSTVWXYZ]/.test(a)) Consonanti += a;
	}
	if (Consonanti.length>3) {
// isolo la prima, terza e quarta consonante
		Consonanti = Consonanti.charAt(0)+Consonanti.substr(2,2);
	} else {
		Consonanti = (Consonanti+Vocali+"XXX").substr(0,3);
	}
	TxtCodFis += Consonanti;
    
// Anno di nascita (7-8)
	aa = String(10000+parseFloat(ggmmaa[2])).substr(3);
	TxtCodFis += aa;
    
// Mese di nascita (9)
	TxtCodFis += (" ABCDEHLMPRST").charAt(ggmmaa[1]);
    
// Giorno di nascita e sesso (10-11)
	Sesso = (Sesso=="F")?140:100;
	gg = String(parseFloat(ggmmaa[0]) + Sesso).substr(1);
	TxtCodFis += gg;


// controlli non attualmente possibili

// non posso fare controlli sul codice del comune
// Codice Località di nascita (12-15)
// TxtCodFis += CodiceComune
// TxtCodFis += '~';
    
// Codice di Controllo: Ultima lettera (16)
// TxtCodFis += getCtrlChar(TxtCodFis);

// finito!
	return (TxtCodFis);

}

function ControllaCF(cf)
{
    var validi, i, s, set1, set2, setpari, setdisp;
    if( cf == '' )  return '';
    cf = cf.toUpperCase();
    if( cf.length != 16 )
        return "La lunghezza del codice fiscale non è\n"
        +"corretta: il codice fiscale dovrebbe essere lungo\n"
        +"esattamente 16 caratteri.\n";
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for( i = 0; i < 16; i++ ){
        if( validi.indexOf( cf.charAt(i) ) == -1 )
            return "Il codice fiscale contiene un carattere non valido `" +
                cf.charAt(i) +
                "'.\nI caratteri validi sono le lettere e le cifre.\n";
    }
    set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    s = 0;
    for( i = 1; i <= 13; i += 2 )
        s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    for( i = 0; i <= 14; i += 2 )
        s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
        return "Il codice fiscale non è corretto:\n"+
            "il codice di controllo non corrisponde.\n";
    return "";
}

function ctrlData( aa , mm , gg ) {
  var anno = aa.value;
  var mese = mm.value;
  var giorno = gg.value;
  var limite;
  var bisestile = false;
  var today = new Date()

// bisogna recuperare il giorno (su 2 cifre) odierno
  var gg_corrente  = today.getDate();
  if(gg_corrente<10)
  gg_corrente="0"+String(gg_corrente);
// bisogna recuperare il mese (su 2 cifre) odierno
  var mm_corrente = today.getMonth()+1;
   if(mm_corrente<10)
   mm_corrente="0"+String( mm_corrente);
 // bisogna recuperare il giorno (su 4cifre) corrente
  var aa_corrente  = today.getFullYear();


    if ( ( giorno.length > 0 ) && ( giorno.length < 2 ) ){
	    alert ( "Attenzione, il giorno deve essere di due cifre.");
	    seleziona( gg );
	    return true;
	}

    if ( ( mese.length > 0 ) && ( mese.length < 2 ) ){
        alert ( "Attenzione, il mese deve essere di due cifre.");
    	seleziona( mm );
	    return true;
  	}
  	
   	if ( ( anno.length > 0 ) && ( anno.length < 4 ) ){
    	alert ( "Attenzione, l'anno deve essere di quattro cifre.");
	    seleziona( aa );
    	return true;
  	}
  	
  	if ( ( giorno > 31 )  || ( giorno < 1 ) ) {
    	alert ('Introdurre un numero corretto per il giorno');
    	seleziona( gg );
    	return true;
  	}
  	
  if ( (mese>12) || ( mese<1)){
    alert ('Introdurre un numero corretto per il mese');
    seleziona( mm );
    return true;
  }
  if ( ( anno%4 ) == 0 ) {
    if ( ( anno%100 ) == 0 ) {
      if ( (anno%400) == 0 ) {
        bisestile = true;
      } else {
        bisestile = false;
      }
    } else {
      bisestile = true;
    }
  } else {
    bisestile = false;
  }

  switch ( mese ) {
    case '1':
    case '3':
    case '5':
    case '7':
    case '8':
    case '10':
    case '12':
    case '01':
    case '03':
    case '05':
    case '07':
    case '08':
      limite = 31;
      break;
    case '4':
    case '6':
    case '9':
    case '04':
    case '06':
    case '09':
    case '11':
      limite=30;
      break;
    default:
      limite = 28;
      if ( bisestile ) {
        limite = 29;
      }
  }

  if ( giorno > limite ) {
    alert('Formato data errato');
    seleziona( gg );
    return true;
  }

  if ( anno > aa_corrente) {

    alert ('Data superiore alla data odierna');
    seleziona( aa );
    return true;
  }
  if ( anno == aa_corrente) {
    if ( mese > mm_corrente ) {

      alert ('Data superiore alla data odierna');
      seleziona( mm );
      return true;
    }
  }
  if ( anno == aa_corrente) {
    if ( mese ==  mm_corrente ) {
      if ( giorno > gg_corrente ) {
        alert ('Data superiore alla data odierna');
        seleziona( gg );
        return true;
      }
    }
  }

  return false;
}

function ctrlDataNascita( aa , mm , gg , intest ) {
	var anno = aa.value;	
	var today = new Date();
	var aaaaOggi  = today.getFullYear();
	
	if (anno < aaaaOggi-120) {
		if ( !confirm('Verifica la data di nascita del ' + intest + ' intestatario. \n\n Continuare ? ') ) {
			seleziona( aa );
			return true;
		}
	}
	
	return false;
}

/* Gestione spostamento cursore data nascita */
function mySpostaFocus(obj, next, length) {
	obj.setAttribute('autocomplete','off'); 
 	if (obj.value.length == length) {
 		next.setAttribute('autocomplete','off'); 
 		next.focus();
	}
} 
