// Invia in ajax sincrono una richiesta ad una funzione di validazione passando i dati del form serializzati.
// Return: risposta JSON
function validate(ajax_validator, validateFunction, form)
{
	var response = null;

	//var newInput = document.createElement('input');

	//newInput.name="validateFunction";
	//newInput.value = validateFunction;
	//$(form).appendChild(newInput);
	formSerializzato = $(form).serialize(true);
	formSerializzato['validateFunction'] = validateFunction;


	new Ajax.Request(
	ajax_validator,
	{
		method:'post',
		asynchronous:false,
		parameters: formSerializzato,
		onSuccess: function(transport) {
			response = transport;
		},
		onFailure: function(trans) {
			alert("Errore ajax:\n\n" + trans.responseText.stripTags());
		}

		}
	);
	return response;

}


// Invia in ajax sincrono una richiesta ad una funzione di validazione passando i dati del form serializzati.
// Mostra un alert o un confirm in caso di errore o warning
// Return:	false in caso di  errori
// 			in caso di warning restituisce true o false in funzione della risposta dell'utente al confirm()
function validateAndAsk(ajax_validator, validateFunction, datiDelForm)
{
  return validateAndAskMsg(ajax_validator, validateFunction, datiDelForm, "Ci sono alcuni errori che non permettono di procedere:\n\n" );
}

function validateAndAskMsg(ajax_validator, validateFunction, datiDelForm, fraseErrore )
{
  pulisciErroriMaschera();

	var response = validate(ajax_validator, validateFunction, datiDelForm).responseText.evalJSON();

	var errori = "";
	var warnings = "";

  if( response.errore != '' )
  {
		for( campoErrore in response.errore )
    {
      appoErrore = response.errore[ campoErrore ];

      for (var j=0; j < appoErrore.length; j++)
      {
			  errori += appoErrore[j] + "\n";
        nomeCampoMascheraErrore = getCampoMaschera( campoErrore );
        if( nomeCampoMascheraErrore != null )
        {
          cmErrore = findObj( nomeCampoMascheraErrore );
          if( cmErrore != null)
            $(nomeCampoMascheraErrore).addClassName( "errore" );
        }
      }
    }

    alert(fraseErrore + errori);
		return false;
  }
	else if( response.warning != '')
	{
		for( campoWarning in response.warning )
    {
      appoWarning = response.warning[ campoWarning ];

      for (var j=0; j < appoWarning.length; j++)
      {
			  warnings += appoWarning[j] + "\n";
      }
    }

		return confirm("Avvertenza!\n\n" + warnings + "\n\nVuoi continuare comunque?");
	}
	else
	{
		return true;
	}
}

function AskMsg(segnalazione)
{
  pulisciErroriMaschera();
  var fraseErrore = "Ci sono alcuni errori che non permettono di procedere:\n\n"
	var response = segnalazione;

	var errori = "";
	var warnings = "";

  if( response.errore != '' )
  {
	 
		for( campoErrore in response.errore )
    {
      appoErrore = response.errore[ campoErrore ];

      for (var j=0; j < appoErrore.length; j++)
      {
			  errori += appoErrore[j] + "\n";
        nomeCampoMascheraErrore = getCampoMaschera( campoErrore );
        if( nomeCampoMascheraErrore != null )
        {
          cmErrore = findObj( nomeCampoMascheraErrore );
          if( cmErrore != null)
            $(nomeCampoMascheraErrore).addClassName( "errore" );
        }
      }
    }

    alert(fraseErrore + errori);
		return false;
  }
	else if( response.warning != '')
	{
		for( campoWarning in response.warning )
    {
      appoWarning = response.warning[ campoWarning ];

      for (var j=0; j < appoWarning.length; j++)
      {
			  warnings += appoWarning[j] + "\n";
      }
    }

		return confirm("Avvertenza!\n\n" + warnings + "\n\nVuoi continuare comunque?");
	}
	else
	{
		return true;
	}
}

function getCampoMaschera( nomeCampo )
{
  if( typeof( getElements ) != "function" )
    return null;

  elements = getElements();
  if( elements != null  )
  {
    var posIndice = nomeCampo.indexOf( "[" );
    var indice = "";
    if( posIndice > 0 )
    {
      indice = nomeCampo.substr( posIndice );
      nomeCampo = nomeCampo.substr( 0, posIndice );
    }

    if( elements[ nomeCampo ] != null )
      return elements[ nomeCampo ]["campoMaschera"] + indice;
  }

  return null;
}

function pulisciErroriMaschera()
{
  //elements = document.getElementsByClassName( "errore" );
  elements = $$( ".errore" );
  if( elements.length > 0 )
  {
    arrayLength = elements.length - 1;
    for( n = arrayLength; n >= 0 ; n-- )
    {
        if( elements[n] != null)
          (elements[n]).removeClassName( "errore" );
    }
  }
}


