function checkForm(){
  var obj= null; var fm=d.frm.mode.value; var result=false; 
  var msg="Errore: \n"; var errcnt=0;

  d.frm.cfname.value=trim(d.frm.cfname.value);
  d.frm.clname.value=trim(d.frm.clname.value);
  d.frm.cemail.value=trim(d.frm.cemail.value);
  d.frm.cphone.value=trim(d.frm.cphone.value);
  if(d.frm.cfname.value==""){
    errcnt++;
    msg=msg+errcnt+". Non avete introdotto il vostro nome. \n";
    d.frm.cfname.className="ferr";
    if(obj==null)obj=d.frm.cfname;
  }else d.frm.cfname.className="fok";
  if(d.frm.clname.value==""){
    errcnt++;
    msg=msg+errcnt+". Non avete introdotto il vostro cognome. \n";
    d.frm.clname.className="ferr";
    if(obj==null)obj=d.frm.clname;
  }else d.frm.clname.className="fok";
  if(d.frm.cemail.value==""){
    errcnt++;
    msg=msg+errcnt+". Non avete introdotto il vostro indirizzo mail. \n";
    d.frm.cemail.className="ferr";
    if(obj==null)obj=d.frm.cemail;
  }else if(checkEmail(d.frm.cemail.value)!=-1){
    errcnt++;
    msg=msg+errcnt+". Il vostro indirizzo mail e' incoretto (formato invalido). \n";
    d.frm.cemail.className="ferr";
    if(obj==null)obj=d.frm.cemail;
  }else d.frm.cemail.className="fok";
  if(d.frm.cphone.value==""){
    errcnt++;
    msg=msg+errcnt+". Non avete introdotto il recapito telefonico. \n";
    d.frm.cphone.className="ferr";
    if(obj==null)obj=d.frm.cphone;
  }else d.frm.cphone.className="fok";

  if(fm==0){
    d.frm.cmsg.value=trim(d.frm.cmsg.value);
    if(d.frm.cmsg.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete inserito il vostro messaggio. \n";
      d.frm.cmsg.className="ferr";
      if(obj==null)obj=d.frm.cmsg;
    }else d.frm.cmsg.className="fok";
  }else if(fm==1){
    d.frm.cfunc.value=trim(d.frm.cfunc.value);
    d.frm.ccomp.value=trim(d.frm.ccomp.value);
    d.frm.catip.value=trim(d.frm.catip.value);
    d.frm.cloc.value=trim(d.frm.cloc.value);
    d.frm.cdescr.value=trim(d.frm.cdescr.value);
    if(d.frm.cpjf[1].checked){
      if(d.frm.ccomp.value==""){
        errcnt++;
        msg=msg+errcnt+". Non avete introdotto il nome della impresa. \n";
        d.frm.ccomp.className="ferr";
        if(obj==null)obj=d.frm.ccomp;
      }else d.frm.ccomp.className="fok";
    }
    if(d.frm.cptip.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il tipo d'immobile. \n";
      d.frm.cptip.className="ferr";
      if(obj==null)obj=d.frm.cptip;
    }else if(d.frm.cptip.value==6 && d.frm.catip.value==""){
      d.frm.cptip.className="fok";
      errcnt++;
      msg=msg+errcnt+". Non avete inserito altro tipo d'immobile. \n";
      d.frm.catip.className="ferr";
      if(obj==null)obj=d.frm.catip;
    }else{
      d.frm.cptip.className="fok";
      d.frm.catip.className="fok";
    }
  }else if(fm==2){
    d.frm.ccet.value=trim(d.frm.ccet.value);
    d.frm.catip.value=trim(d.frm.catip.value);
    d.frm.cloc.value=trim(d.frm.cloc.value);
    d.frm.cdescr.value=trim(d.frm.cdescr.value);
    if(d.frm.cptip.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il tipo d'immobile. \n";
      d.frm.cptip.className="ferr";
      if(obj==null)obj=d.frm.cptip;
    }else if(d.frm.cptip.value==6 && d.frm.catip.value==""){
      d.frm.cptip.className="fok";
      errcnt++;
      msg=msg+errcnt+". Non avete inserito altro tipo d'immobile. \n";
      d.frm.catip.className="ferr";
      if(obj==null)obj=d.frm.catip;
    }else{
      d.frm.cptip.className="fok";
      d.frm.catip.className="fok";
    }
  }else if(fm==3){
    d.frm.can.value=trim(d.frm.can.value);
    d.frm.cpret.value=trim(d.frm.cpret.value);
    d.frm.catip.value=trim(d.frm.catip.value);
    d.frm.cloc.value=trim(d.frm.cloc.value);
    d.frm.cdescr.value=trim(d.frm.cdescr.value);
    if(d.frm.cptip.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il tipo d'immobile. \n";
      d.frm.cptip.className="ferr";
      if(obj==null)obj=d.frm.cptip;
    }else if(d.frm.cptip.value==6 && d.frm.catip.value==""){
      d.frm.cptip.className="fok";
      errcnt++;
      msg=msg+errcnt+". Non avete inserito altro tipo d'immobile. \n";
      d.frm.catip.className="ferr";
      if(obj==null)obj=d.frm.catip;
    }else{
      d.frm.cptip.className="fok";
      d.frm.catip.className="fok";
    }
    if(d.frm.cloc.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto la locazione dell'immobile. \n";
      d.frm.cloc.className="ferr";
      if(obj==null)obj=d.frm.cloc;
    }else d.frm.cloc.className="fok";
    if(d.frm.can.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto l'anno della costruzione. \n";
      d.frm.can.className="ferr";
      if(obj==null)obj=d.frm.can;
    }else d.frm.can.className="fok";
    if(d.frm.cpret.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto il prezzo di vendita. \n";
      d.frm.cpret.className="ferr";
      if(obj==null)obj=d.frm.cpret;
    }else d.frm.cpret.className="fok";
  }else if(fm==4){
    d.frm.cpret.value=trim(d.frm.cpret.value);
    d.frm.catip.value=trim(d.frm.catip.value);
    d.frm.cloc.value=trim(d.frm.cloc.value);
    if(d.frm.cptip.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il tipo tipo d'immobile. \n";
      d.frm.cptip.className="ferr";
      if(obj==null)obj=d.frm.cptip;
    }else if(d.frm.cptip.value==6 && d.frm.catip.value==""){
      d.frm.cptip.className="fok";
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto il tipo d'immobile. \n";
      d.frm.catip.className="ferr";
      if(obj==null)obj=d.frm.catip;
    }else{
      d.frm.cptip.className="fok";
      d.frm.catip.className="fok";
    }
    if(d.frm.cpret.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto il prezzo che siete disposti a pagare. \n";
      d.frm.cpret.className="ferr";
      if(obj==null)obj=d.frm.cpret;
    }else d.frm.cpret.className="fok";
  }else if(fm==5){
    d.frm.ctara.value=trim(d.frm.ctara.value);
    d.frm.cvarsta.value=trim(d.frm.cvarsta.value);
    d.frm.cnrpers.value=trim(d.frm.cnrpers.value);
    d.frm.cdescr.value=trim(d.frm.cdescr.value);
    if(d.frm.ctara.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto il paese. \n";
      d.frm.ctara.className="ferr";
      if(obj==null)obj=d.frm.ctara;
    }else d.frm.ctara.className="fok";
    if(d.frm.cnrpers.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto il numero di persone. \n";
      d.frm.cnrpers.className="ferr";
      if(obj==null)obj=d.frm.cnrpers;
    }else d.frm.cnrpers.className="fok";
    if(d.frm.cday1.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il giorno del comincio. \n";
      d.frm.cday1.className="ferr";
      if(obj==null)obj=d.frm.cday1;
    }else d.frm.cday1.className="fok";
    if(d.frm.cmon1.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il mese del comincio. \n";
      d.frm.cmon1.className="ferr";
      if(obj==null)obj=d.frm.cmon1;
    }else d.frm.cmon1.className="fok";
    if(d.frm.cyr1.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto l'anno del comincio. \n";
      d.frm.cyr1.className="ferr";
      if(obj==null)obj=d.frm.cyr1;
    }else d.frm.cyr1.className="fok";
    if(d.frm.cday2.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il giorno della fine. \n";
      d.frm.cday2.className="ferr";
      if(obj==null)obj=d.frm.cday2;
    }else d.frm.cday2.className="fok";
    if(d.frm.cmon2.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il mese della fine. \n";
      d.frm.cmon2.className="ferr";
      if(obj==null)obj=d.frm.cmon2;
    }else d.frm.cmon2.className="fok";
    if(d.frm.cyr2.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto l'anno della fine. \n";
      d.frm.cyr2.className="ferr";
      if(obj==null)obj=d.frm.cyr2;
    }else d.frm.cyr2.className="fok";
  }else if(fm==6){
    d.frm.cpret.value=trim(d.frm.cpret.value);
    d.frm.catip.value=trim(d.frm.catip.value);
    d.frm.cloc.value=trim(d.frm.cloc.value);
    d.frm.cnrcam.value=trim(d.frm.cnrcam.value);
    d.frm.csupra.value=trim(d.frm.csupra.value);
    d.frm.cetmin.value=trim(d.frm.cetmin.value);
    d.frm.cetmax.value=trim(d.frm.cetmax.value);
    if(d.frm.cptip.value==0){
      errcnt++;
      msg=msg+errcnt+". Non avete scelto il tipo della proprieta'immobiliare. \n";
      d.frm.cptip.className="ferr";
      if(obj==null)obj=d.frm.cptip;
    }else if(d.frm.cptip.value==6 && d.frm.catip.value==""){
      d.frm.cptip.className="fok";
      errcnt++;
      msg=msg+errcnt+". Non avete inserito altro tipo d'immobile. \n";
      d.frm.catip.className="ferr";
      if(obj==null)obj=d.frm.catip;
    }else{
      d.frm.cptip.className="fok";
      d.frm.catip.className="fok";
    }
    if(d.frm.cloc.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto la locazione dell'immobile. \n";
      d.frm.cloc.className="ferr";
      if(obj==null)obj=d.frm.cloc;
    }else d.frm.cloc.className="fok";
    if(d.frm.cpret.value==""){
      errcnt++;
      msg=msg+errcnt+". Non avete introdotto il prezzo massimo. \n";
      d.frm.cpret.className="ferr";
      if(obj==null)obj=d.frm.cpret;
    }else d.frm.cpret.className="fok";
  }
  if(obj!=null){obj.focus();alert(msg);}
  else result=true;
  return result;
}