   function checkDupl(f) {
    var aCom=new Array()
    var i,val, com
    // Stranieri
    for (i=0; i<f.elements['str_da[]'].length; i++) {
        val=parseInt(f.elements['str_da[]'][i].value, 10)
        if (val >0) {
            aCom[aCom.length] = val
        }
    }
    aCom.sort()
    if (aCom.length > 0) {
        com=aCom[0]
        for (i=1; i<aCom.length;i++) {
            if (com == aCom[i]) {
                alert('Ci sono stati stranieri ripetuti!')
                return false;
            } else {
                com=aCom[i]
            }
        }
    }

    // Italiani
    aCom.length=0  // svuoto il vettore
    for (i=0; i<f.elements['ita_da[]'].length; i++) {
        val=parseInt(f.elements['ita_da[]'][i].value, 10)
        if (val >0)
            aCom[aCom.length] = val
    }
    aCom.sort()
    if (aCom.length > 0) {
        com=aCom[0]
        for (i=1; i<aCom.length;i++) {
            if (com == aCom[i]) {
                alert('Ci sono provincie italiane ripetute!')
                return false;
            } else {
                com=aCom[i]
            }
        }
    }
    return true
   }

function checkSelDa(e) {
    var n=e.name
    var f=e.form
	var indice=e.ix
    var x=n.substr(0,4) // 'str_ o 'ita_
    var primavolta =(f.primavolta.value !='')
checkDupl(f);
	if((indice >=0)){
		if((indice)){
				jj=indice;
			}else{
				jj=0;
			}
		
	}else{
		
		jj=((e.tabIndex)-1)/5;
		if (x=="ita_")
		{
		jjmodulo=(e.tabIndex)-1;
		jjmodulo=Math.floor(jjmodulo/50)+1;
		jjmodulo=(jjmodulo*10)
		jj=(e.tabIndex)-1;
		jj= jj/5;
		jj=jj%jjmodulo;
		jj=jj%(jjmodulo/2);
		}
			else 
		{
				jj=jj
			
		}
		jj=e.parentNode.parentNode.parentNode.parentNode.id.replace("record_"+n.substr(0,3),'')

	}	    
	
   
    if (e.value == 0) {
        // quii
        f.elements[x+'arr[]'][jj].value=0;
        f.elements[x+'par[]'][jj].value=0;
        f.elements[x+'arr[]'][jj].defaultValue=0;
        f.elements[x+'par[]'][jj].defaultValue=0;
        f.elements[x+'arr[]'][jj].readOnly=true;
        f.elements[x+'par[]'][jj].readOnly=true;
        f.elements[x+'pre[]'][jj].value=0;
        f.elements[x+'pre[]'][jj].defaultValue=0;
        if ( primavolta ) {
            f.elements[x+'pre_old[]'][jj].value=0;
            f.elements[x+'pre_old[]'][jj].defaultValue=0;
            f.elements[x+'pre_old[]'][jj].readOnly=true;
        }

    } else {
        f.elements[x+'par[]'][jj].readOnly=false;
        f.elements[x+'arr[]'][jj].readOnly=false;
        f.elements[x+'arr[]'][jj].focus();
        if ( primavolta && f.elements[x+'pre_old[]'][jj].type!='hidden') {
            f.elements[x+'pre_old[]'][jj].readOnly=false;
            f.elements[x+'pre_old[]'][jj].focus();
        }

    }
    return true;
}


function checkDaCancella(formName,e) {
eval('var f = document.'+formName);
elemento=e.id.replace('record_','');
nazionalita=elemento.substr(0,3);
indice=elemento.replace(nazionalita,'');
f.elements['arr_tot_tot'].value = f.elements['arr_tot_tot'].value - f.elements[nazionalita+'_arr[]'][indice].value;
f.elements[nazionalita+'_arr_tot'].value = f.elements[nazionalita+'_arr_tot'].value - f.elements[nazionalita+'_arr[]'][indice].value;

f.elements['pre_tot_tot'].value = f.elements['pre_tot_tot'].value - f.elements[nazionalita+'_pre[]'][indice].value;
f.elements[nazionalita+'_tot'].value = f.elements[nazionalita+'_tot'].value - f.elements[nazionalita+'_pre[]'][indice].value;

f.elements['par_tot_tot'].value = f.elements['par_tot_tot'].value - f.elements[nazionalita+'_par[]'][indice].value;
f.elements[nazionalita+'_par_tot'].value = f.elements[nazionalita+'_par_tot'].value - f.elements[nazionalita+'_par[]'][indice].value;

f.elements['pre_old_tot_tot'].value = f.elements['pre_old_tot_tot'].value - f.elements[nazionalita+'_pre_old[]'][indice].value;
f.elements[nazionalita+'_pre_old_tot'].value = f.elements[nazionalita+'_pre_old_tot'].value - f.elements[nazionalita+'_pre_old[]'][indice].value;

f.elements[nazionalita+'_da[]'][indice].value='0';
f.elements[nazionalita+'_pre_old[]'][indice].value='0';
f.elements[nazionalita+'_par[]'][indice].value='0';
f.elements[nazionalita+'_arr[]'][indice].value='0';
f.elements[nazionalita+'_pre[]'][indice].value='0';
ftemp=f.elements[nazionalita+'_da[]'][indice];
if ( ftemp.previousSibling.name='str_da_falsa_combo')
	{
		ftemp.previousSibling.value='';
	}
	else
	{
		ftemp.value='';
	}

  return true;
}


   function checkStrIta(e) {
      var n=e.name
      var f=e.form
      var x=n.substr(3,4) // _arr o _par _pre
      jj=e.ix
      var primavolta= (f.primavolta.value !='')
      var tipo,msg='', v, arr, naz,tot
      var stra = (n.indexOf('str_') == 0) // true se stranieri
	  var arrivi=(stra ? 'str_arr': 'ita_arr')
      var pres=(stra ? 'str_pre': 'ita_pre')
      var totPre=(stra ? 'str_tot': 'ita_tot')
		var totArr=(stra ? 'str_arr_tot': 'ita_arr_tot')
		var totPar=(stra ? 'str_par_tot': 'ita_par_tot')
      var presenze_old=(stra ? 'str_pre_old': 'ita_pre_old')
      var totPre_old=(stra ? 'str_pre_old_tot': 'ita_pre_old_tot')

		  
      switch (x) {

        case '_arr' :
           tipo='arrivati '
           arr = true
		pre_old=false
           break
        case '_par' :
           tipo='partiti '
           arr = false
			pre_old=false
           break

		case '_pre' :
           arr = false
			pre_old=true
           tipo='presenti '
           break

      }
      naz=( stra ? 'Stranieri ': 'Italiani ')
      if (! checkInt(e.value,0)) {
         alert('Il campo ' + naz + tipo + ' deve essere un numero intero >= 0!')
         e.value=e.defaultValue;
         e.focus();
         return false
      }

      // Controllo che le partenze non superino i vecchi presenti (**)
      if ( x == '_par' ) {
           tot=parseInt(f.elements[pres+'_old[]'][jj].value, 10) -  parseInt(e.value, 10)
           if (tot < 0) {
               alert('Il campo partiti non puo\' essere maggiore dei presenti iniziali ('+ f.elements[pres+'_old[]'][jj].value+')! \n \nDecreto Regionale 3851 del 8/7/2005: "Non devono essere conteggiati gli arrivi di soggetti che trascorrono solo poche ore del giorno negli esercizi (es. escursionisti, congressisti, ecc.). Nel caso in cui l\'arrivo sia stato registrato deve essere cancellato. Nel caso in cui i clienti arrivino dopo la mezzanotte ma trascorrono quella stessa notte nell\'esercizio, deve essere indicata come data di arrivo il giorno precedente.');
               e.value=e.defaultValue;
               e.focus();
               return false
         }
      }
      //if ( (x != '_pre') ) {
//      if ( x != '_pre' ) {
        if (arr) {
           tot=parseInt(f.elements[pres+'[]'][jj].value, 10) - parseInt(e.defaultValue, 10) + parseInt(e.value,10)
			temp=parseInt(f.elements[arrivi+'[]'][jj].value, 10)
			f.elements[totArr].value=parseInt(f.elements[totArr].value, 10) - parseInt(e.defaultValue, 10) +  parseInt(e.value,10)
			   
        } else if (pre_old)
        {
			tot=parseInt(f.elements[pres+'[]'][jj].value, 10) - parseInt(e.defaultValue, 10) + parseInt(e.value,10)
			temp=parseInt(f.elements[presenze_old+'[]'][jj].value, 10)
			f.elements[totPre_old].value=parseInt(f.elements[totPre_old].value, 10) - parseInt(e.defaultValue, 10) +  parseInt(e.value,10)


        }
		else {
           tot=parseInt(f.elements[pres+'[]'][jj].value, 10) + parseInt(e.defaultValue, 10) - parseInt(e.value, 10)
			f.elements[totPar].value=parseInt(f.elements[totPar].value, 10) - parseInt(e.defaultValue, 10) +  parseInt(e.value,10)        }
        if (tot < 0) {
           alert('Il campo presenti non puo\' essere negativo!');
           e.value=e.defaultValue;
           e.focus();
           return false
        }
        f.elements[totPre].value=parseInt(f.elements[totPre].value, 10) + tot  - parseInt(f.elements[pres+'[]'][jj].value, 10)
		f.elements['pre_old_tot_tot'].value=parseInt(f.elements['str_pre_old_tot'].value, 10) + parseInt(f.elements['ita_pre_old_tot'].value, 10)
		f.elements['arr_tot_tot'].value=parseInt(f.elements['str_arr_tot'].value, 10) + parseInt(f.elements['ita_arr_tot'].value, 10)
		f.elements['par_tot_tot'].value=parseInt(f.elements['str_par_tot'].value, 10) + parseInt(f.elements['ita_par_tot'].value, 10)
		f.elements['pre_tot_tot'].value=parseInt(f.elements['str_tot'].value, 10) + parseInt(f.elements['ita_tot'].value, 10)
		
		

        f.elements[pres+'[]'][jj].value=tot
        // non aggiorno defaultValue perche' mi serve il vecchio valore per controllo (**)
        // f.elements[pres+'[]'[jj].defaultValue=tot
//      } else { // modifica presenti notte precedente
//          tot=parseInt(f.elements[pres+'[]'][jj].value, 10) - parseInt(e.defaultValue, 10) + parseInt(e.value,10)
//      }
      e.defaultValue = e.value

      return true;
   }

   function checkDataLav(e) {
      var oggi, dt

      if (! (dt = makeDate(e)) ) {
          alert ( 'Data di lavoro scorretta ');
          e.value=e.defaultValue;
          e.focus();
          return false
      }
      // confronto con data di ieri
      oggi = new Date()
      if (dateDiff(dt, oggi) >= 0) { // ieri - oggi = -1 , oggi - oggi=0, dt-oggi <= -1
          alert ( 'Data di lavoro maggiore di ieri ');
          e.value=e.defaultValue;
          e.focus();
          return false
      }

      e.defaultValue=e.value;
      return true
   }
