var oPopupWin;
function popup(page, left,width, height) {
    var tmp;
    if (oPopupWin) {
        // Make sure oPopupWin is empty before
        // calling .close() or we could throw an
        // exception and never set it to null.
        tmp = oPopupWin;
        oPopupWin = null;

        // Only works in IE...  Netscape crashes
        // if you have previously closed it by hand
        if (navigator.appName != "Netscape")
            tmp.close();
    }

    oPopupWin = window.open(page, "IntlPopup", "alwaysRaised=1,dependent=1,height=" + height + ",location=0,menubar=0,personalbar=0,scrollbars=1,status=0,toolbar=0,width=" + width + ",left="+left+",resizable=0");
    oPopupWin.focus();
    return !oPopupWin;
}


//---------------------------------------------------------------
function upper(cc) {
  cc.value=cc.value.toUpperCase();
}
//---------------------------------------------------------------
function numeric(cc) {
   for (var i=0;i<cc.value.length;i++) {
      var c=cc.value.charAt(i);
      if (!isDigit(c)) {
         cc.value="1";
         alert("Valore non valido");
         cc.focus();
         return;
      }
   }
}
//---------------------------------------------------------------
function onCapChange(ff,cc) {
   if (cc.value.length!=5) {
      cc.value="";
      alert("CAP non valido");
      cc.focus();
      return;
   }
   numeric(cc);
}

function onDataNascitaChange(cc) {
}   
function onggDataNascitaChange(cc) {
   calculate();
}   
function onmmDataNascitaChange(cc) {
   calculate();
}   
function onaaDataNascitaChange(cc) {
   calculate();
}   

function onCognomeChange(ff,cc) {
   cc.value=cc.value.toUpperCase(); 
   calculate(ff);
}   
  
function onNomeChange(ff,control) {
   control.value=control.value.toUpperCase(); 
   calculate(ff);
}  

function calculate(page) {
   page.cognome.value=page.cognome.value.toUpperCase();
   page.nome.value   =page.nome.value.toUpperCase();
   var c1= Cognome2CodiceFiscale(page.cognome.value);
   var c2= Nome2CodiceFiscale(page.nome.value);
   var cf15=c1+c2;
   //var cc=calcolaCarattereControlloCodiceFiscale(cf15);
   page.codicefiscale.value=cf15;
}   


function validateDate2(gg, mm, aa) {
	//	===================================
	// return 0; data ok
	// return 1; Febbraio ha un massimo di 29 giorni!
	// return 2; Il mese indicato ha un massimo di 30 giorni!
	// return 3; Mese o giorno inesatti!
	// return 4; Anno inesatto!
   // return 5; Carattere sbagliato!
   // return 6; Febbraio ha un massimo di 28 giorni!
	//	===================================
   
   var ap = gg+mm+aa;
   for (i=0;i<ap.length;i++) {
      var c = ap.charAt(i);
      var b = false;
      b = isDigit(c);
      if (!b) {
         return 5;
      }
   }

   var mese = mm*1;
   var giorno = gg*1;
   var anno = aa*1;
   
    
   if (anno < 1900)
       return 10;

   if ( (mese==0)||(giorno==0)||(anno==0)) {
      return 7;
   }


   if (mese>12) return 3;
   switch (mese) {
      case 1:
         if (giorno>31) return 3;
         break;
      case 2:
         var resto = parseInt(anno%4);
         if (resto>0){
            if (giorno>28) return 6;
         }else{
            if (giorno>29) return 1;
         }
      case 3:
         if (giorno>31) return 3;
         break;
      case 4:
         if (giorno>30) return 2;
         break;
      case 5:
         if (giorno>31) return 3;
         break;
      case 6:
         if (giorno>30) return 2;
         break;
      case 7:
         if (giorno>31) return 3;
         break;
      case 8:
         if (giorno>31) return 3;
         break;
      case 9:
         if (giorno>30) return 2;
         break;
      case 10:
         if (giorno>31) return 3;
         break;
      case 11:
         if (giorno>30) return 2;
         break;
      case 12:
         if (giorno>31) return 3;
      default:
         return 0;
   }
}

function onDataChange(form ,cc) {
   var d=cc.value;
   //var dd=d.substr(0,2)+'/'+d.substr(3,2)+'/'+d.substr(6,4) ;
   var res = validateDate2(d.substr(0,2),d.substr(3,2),d.substr(6,4));
   if (res > 0 ) {
       alert("Data non valida!");
       cc.value="";
       return -1;
   }
   return 0;
}

function onDataChange2(form ,cc) {
   var d=cc.value;
   var res = validateDate2(1,d.substr(0,2),d.substr(3,4));
   if (res > 0 ) {
       alert("Data non valida!");
       cc.value="";
       return -1;
   }
   return 0;
}

function onCodiceChange(control) {
   control.value=control.value.toUpperCase();
   if (control.value.length < 16){
      alert("Il codice fiscale deve avere lunghezza 16");
      return;
   }
   var res1 = validate(control.value);
   if (res1 == 1){
      alert("Il codice fiscale deve avere lunghezza 16");
   }else if (res1 == 2){
       alert("Il codice fiscale deve avere lunghezza 16");
   }else if (res1 == 3){
       alert("E' stato inserito un carattere non valido");
   }else if (res1 == 4){
       alert("Il codice fiscale inserito non è corretto!");
   }
   if (res1 > 0 ) {
      control.focus();
      return;
   }
}

function updateData(cf,data) {
   //alert(control.value);
   var gg=cf.value.substr(9,2) ;
   gg=gg*1;   
   if (gg>=40)
      gg=gg-40;

   if (gg<10) {
      //alert('<10');
      gg='0'+gg;
   }
      
   var mm=cf.value.substr(8,1);
   var aa='19'+cf.value.substr(6,2);
   var mese=CodiceFiscale2mm(mm)+1;
   if (mese < 10)
      mese='0'+mese;
   data.value= gg+'/'+mese+'/'+aa;
}


