/**
* Contiene una serie di funzioni generali per testare i campi obbligatori 
*/

function controlla_uguali(id1,id2){
        if($(id1).value==$(id2).value){
               return "";
        }
        Element.addClassName(id2,'errore');

		var tmp_messaggio = err_form['campi_diversi'];
		tmp_messaggio = tmp_messaggio.replace(/CAMPO1/, $(id1).title);
		tmp_messaggio = tmp_messaggio.replace(/CAMPO2/, $(id2).title); 
		
        return tmp_messaggio;

}
 
function convalida(idForm, action, controlla_cap_finale){
 
	if( controlla_cap_finale === undefined )
		controlla_cap_finale=0;
	
    	
 
		var tmp_messaggio="";
        var error = 0;
        var errori = $$("#" + idForm + " .errore");
        errori.each(
			function(obj){
				Element.removeClassName(obj,'errore');
			}
        )

        var msg_form = $$("#" + idForm + " .msg_form");
        msg_form.each(
			function(obj){
				obj.innerHTML="";
			}
        )
        
        // sempre 2 alla volta
        for(i=1;i<5;i++){
			var classe="uguale_"+ i;
			var uguali = $$("#" + idForm + " ." + classe);
			if(uguali.length==2){
				tmp_messaggio = controlla_uguali(uguali[0].id,uguali[1].id);

				if(!$(uguali[1].id + "_msg")){
					var s = document.createElement("span");
					s.setAttribute("id",uguali[1].id + "_msg");
					$(s).addClassName("msg_form");
					var p = uguali[1].parentNode;
					$(p).insert(s);
				}		
 
				$(uguali[1].id + "_msg").innerHTML = tmp_messaggio;
				if(tmp_messaggio != "")
					error++;
         	}
        }

        /* Recupero e controllo i campi obbligatori */
        var obbligatori = $$("#" + idForm + " .obbligatorio");
        obbligatori.each(
			function(obj){
				if(obj.type=="checkbox"){
					if(!obj.checked){
						Element.addClassName(obj,'errore');       
						if(!$(obj.id + "_msg")){
							var s = document.createElement("span");
							s.setAttribute("id",obj.id + "_msg");
							$(s).addClassName("msg_form");
							var p = obj.parentNode;
							$(p).insert(s);
						}		
						
						$(obj.id + "_msg").innerHTML =  "<span style='color:red'>" + err_form['obbligatorio'] +"</span>";
						
						error++;
					} 
				}else{
					if(obj.value.trim()=="" || obj.value.trim()=="0"){
						
						Element.addClassName(obj,'errore');
						if(!$(obj.id + "_msg")){
							var s = document.createElement("span");
							s.setAttribute("id",obj.id + "_msg");
							$(s).addClassName("msg_form");
							var p = obj.parentNode;
							$(p).insert(s);
						}		
						
						$(obj.id + "_msg").innerHTML =  err_form['obbligatorio'];
						
						error++;
					} 
				}
			}
        )
        

        /* Recupero e controllo i campi numerici */
        var numerici = $$("#" + idForm + " .numerico");
        numerici.each(
			function(obj){
				if(!obj.value.isNumeric()){
					
					Element.addClassName(obj,'errore');
						if(!$(obj.id + "_msg")){
							var s = document.createElement("span");
							s.setAttribute("id",obj.id + "_msg");
							$(s).addClassName("msg_form");
							var p = obj.parentNode;
							$(p).insert(s);
						}		

					$(obj.id + "_msg").innerHTML = err_form['numerico']
					
					error++;
				}
			}
        )

        /* Recupero e controllo i campi email */
        var email = $$("#" + idForm + " .email");
        email.each(
			function(obj){
				if(!obj.value.isMail()){
					
					Element.addClassName(obj,'errore');
						if(!$(obj.id + "_msg")){
							var s = document.createElement("span");
							s.setAttribute("id",obj.id + "_msg");
							$(s).addClassName("msg_form");
							var p = obj.parentNode;
							$(p).insert(s);
						}		
			
					$(obj.id + "_msg").innerHTML = err_form['email'];
					
					error++;
				}
			}
		)
  
  		if($('nazione') != null){
  			var idNazione = $('nazione').value;
  			if ( controlla_cap_finale == 1 && idNazione == 2){
  				//funzione sincrona che verifica se il cap inserito is coerente coi dati
  				var obj_esito = new esito_cap();
  				controlla_cap(obj_esito);
  				if(obj_esito.value == 0)
  					alert(err_form['verifica_cap']);
  				if(obj_esito.value == 1 && error==0){
					$(idForm).action=action;
					$(idForm).submit();
		        }
		    }else
				if(error==0){
					$(idForm).action=action;
					$(idForm).submit();
	        	}
			
		}else
        	if(error==0){
				$(idForm).action=action;
				$(idForm).submit();
        	}
}
/******/
 
function esito_cap () {
	this.value = -1;
}


/*
        Trimma una stinga e aggiunge la funzionalità a String
*/
function trim(){
        tmp=this;
        while (tmp.substring(0,1) == ' '){
               tmp = tmp.substring(1, tmp.length);
        }
        while (tmp.substring(tmp.length-1, tmp.length) == ' ')
        {
               tmp = tmp.substring(0,tmp.length-1);
        }
        return tmp;
}

/*
        Controlla se una stringa è numerica
*/
function isNumeric(){
        var tmp=this;
        var ValidChars = "0123456789.";
        var IsNumber=true;
        var Char;
        for (i = 0; i < tmp.length && IsNumber == true; i++){
        Char = tmp.charAt(i);
               if (ValidChars.indexOf(Char) == -1){
                       IsNumber = false;
        }
    }
        return IsNumber;
}

/*
* Controlla se una stringa è mail valida
*/
function isMail(){
        var tmp=this;
        var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if(tmp.trim()=="")
               return true;

        if (filter.test(tmp))
               return true;
        else
               return false;
}

function replaceAll(findStr,repStr) {
        oldStr=this;
  var srchNdx = 0;  
  var newStr = "";  
  while (oldStr.indexOf(findStr,srchNdx) != -1)  {
    newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));
    newStr += repStr;
    srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);
  }
  newStr += oldStr.substring(srchNdx,oldStr.length);
  return newStr;
}

String.prototype.trim=trim;
String.prototype.isNumeric=isNumeric;
String.prototype.isMail=isMail;
String.prototype.replaceAll=replaceAll;