Zener = function()
{
	// DATI PERSONALI
	this.Nome          = '';
	this.Cognome       = '';
	this.Indirizzo     = '';
	this.CodiceFiscale = '';
	this.PartitaIVA    = '';
	this.Email         = '';
	
	this.RisultatiSuCarta = '';
	

	// DATI PROVA
	this.MazziUsati      = 1;
	this.Significativita = 'P=.01';
	
	
	// DOM ELEMENTS
	this.CartaEstratta   = null;
	this.CarteDaEstrarre = null;
	this.CarteEstratte   = null;
		
	// MAZZI E CARTE
	this.MazzoVergine = [
		  'Cerchio' , 'Cerchio' , 'Cerchio' , 'Cerchio' , 'Cerchio'
		, 'Croce'   , 'Croce'   , 'Croce'   , 'Croce'   , 'Croce'
		, 'Onde'    , 'Onde'    , 'Onde'    , 'Onde'    , 'Onde'
		, 'Quadrato', 'Quadrato', 'Quadrato', 'Quadrato', 'Quadrato'
		, 'Stella'  , 'Stella'  , 'Stella'  , 'Stella'  , 'Stella'
	];

	this.Mescolate = 5;
	this.MazzoMescolato = [];
	this.Risultati      = [];
	this._Running =false;
}

Zener.prototype =
{
	Inizia: function()
	{
		this.MazziUsati      = isNaN($F('ddlMazziUsati')) ? 1 : parseInt($F('ddlMazziUsati'));
		this.Significativita = $F('ddlSignificativita');

		this.Mescola();
	}
	
	, Mescola: function()
	{
		// RESET VALORI
		this.MazzoMescolato = [];
		this.Risultati      = [];
		
		// UNIONE MAZZI RICHIESTI
		for(var i=this.MazziUsati; i>0; i--)
		{
			var NuovoMazzo = this.MazzoVergine.clone();
			for(var ii=this.Mescolate; ii>0; ii--){NuovoMazzo.sort(function(){return 0.5 - Math.random()});}
			this.MazzoMescolato = this.MazzoMescolato.concat(NuovoMazzo);
		}

		// SET VALORI DI STARTUP
		this.CarteDaEstrarre.update(this.MazzoMescolato.length);
		this.CarteEstratte.update('0');
	}
	
	, ScegliCarta: function(Carta)
	{
		if(this._Running==true) return false;
		if(this.MazzoMescolato.length==0)                    {alert('Non hai ancora iniziato il test.');return false;}
		if(this.MazzoMescolato.length==this.Risultati.length){alert('Hai già estratto tutte le carte.');return false;} // MESSAGGIO ?
		
		this._Running = true;
		this.Risultati.push(Carta);
		this.CarteDaEstrarre.update(this.MazzoMescolato.length - this.Risultati.length);
		this.CarteEstratte.update(this.Risultati.length);
		this.MostraCarta();
		this._Running = false;
	}
	
	, MostraCarta: function()
	{
		if(this.MazzoMescolato.length==0) return false;
		
		var domHandler =this.CartaEstratta;
		domHandler.update('<img src="/immagini/AjaxLoader.gif" width="32" height="32" />');
		
		var CartaVisualizzata = this.MazzoMescolato[this.Risultati.length-1];
		var HTML = '';
		switch(CartaVisualizzata)
		{
			case 'Cerchio':
				HTML = '<img src="circlezener.jpg" alt="Cerchio" width="62" height="75" />';
				break;
			case 'Croce':
				HTML = '<img src="crosszener.jpg" alt="Croce" width="62" height="75" />';
				break;
			case 'Onde':
				HTML = '<img src="waveszener.jpg" alt="Onde" width="62" height="75" />';
				break;
			case 'Quadrato':
				HTML = '<img src="squarezener.jpg" alt="Quadrato" width="62" height="75" />';
				break;
			case 'Stella':
				HTML = '<img src="starzener.jpg" alt="Stella" width="62" height="75" />';
				break;
			default:
		}
		if(HTML.length > 0) window.setTimeout(function(){domHandler.update(HTML);}, 500);
		var mm = this.MazzoMescolato;
		var rs = this.Risultati;
		window.setTimeout(function()
							{
								domHandler.update('<img src="/immagini/CartaZener.jpg" alt="Carta" width="62" height="75" />');
								if(mm.length==rs.length){alert('Prova completata.');return false;} // MESSAGGIO DI FINE TEST
							}, 3000);
	}
	
	, InviaRisultati: function()
	{
		if(this.MazzoMescolato.length==0)                     {alert('Non hai ancora sostenuto il test.');return false;}
		if(this.MazzoMescolato.length > this.Risultati.length){alert('Non hai ancora estratto tutte le carte.');return false;} // MESSAGGIO ?
		// RACCOLTA DATI
		this.Nome             = $F('txtNome');
		this.Cognome          = $F('txtCognome');
		this.Indirizzo        = $F('txtIndirizzo');
		this.CodiceFiscale    = $F('txtCodiceFiscale');
		this.PartitaIVA       = $F('txtPartitaIVA');
		this.Email            = $F('txtEmail');
		this.RisultatiSuCarta = $('chkRisultatiSuCarta').checked ? 'si' : 'no';

		var Errori = '';
		if(this.Nome.length==0)          Errori += 'Inserisci correttamente il tuo nome\n';
		if(this.Cognome.length==0)       Errori += 'Inserisci correttamente il tuo cognome\n';
		if(this.Indirizzo.length==0)     Errori += 'Inserisci correttamente il tuo indirizzo\n';
		if(this.CodiceFiscale.length==0) Errori += 'Inserisci correttamente il tuo codice fiscale\n';
		// if(this.PartitaIVA.length==0)    Errori += 'Inserisci correttamente la tua partita IVA\n';
		// if(this.Email.length==0)         Errori += 'Inserisci correttamente la tua email\n';

		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (!filter.test(this.Email)) Errori += 'Inserisci correttamente la tua email\n';

		if(Errori.length>0){alert(Errori); return false;}
		
		var Params =
		{
			Nome               : this.Nome
			, Cognome          : this.Cognome
			, Indirizzo        : this.Indirizzo
			, CodiceFiscale    : this.CodiceFiscale
			, PartitaIVA       : this.PartitaIVA
			, Email            : this.Email
			, RisultatiSuCarta : this.RisultatiSuCarta
			
			, MazziUsati       : this.MazziUsati
			, Significativita  : this.Significativita
			
			, MazzoMescolato   : this.MazzoMescolato
			, Risultati        : this.Risultati
		}
		
		new Ajax.Request('/AjaxResponder.php?T' + Math.random(),
			{
				asynchronous: true,
				method      : 'post',
				encoding    : 'UTF-8',
				parameters  : {'Params': Object.toJSON(Params)},
				onLoading   : function(rq){$('btnInvia').hide();$('waitInvia').show();},
				onFailure   : function(rq){$('waitInvia').hide();$('btnInvia').show();alert('Errore ' + rq.status + ' -- ' + rq.statusText);},
				onSuccess   : function(rq)
								{
									if(!rq.responseText.isJSON()){alert('JSON: NOT A JSON RESPONSE.'); return false;}
									var obj = rq.responseText.evalJSON();
									if(obj.ResultCode!=0){alert(obj.ResultCode + ': ' + obj.ResultDesc);$('waitInvia').hide();$('btnInvia').show(); return false;}
									top.location.href='graziezener.html';
								}
			}
		);
	}
}
