// porta_applicativa_client.js
// autore: Iacopo
// copyright 2006 Metaware S.p.A.
// creato il 8/03/2007

/*
 * L'oggetto PortaApplicativaClient contiene i dati pertinenti alla gestione dei dati dinimici del R.I.
 * Per invocate la servlet bisogna creare un oggetto PortaApplicativaRequest  
 */
var PortaApplicativaClient = new Object();

// cache delle visure C.F.
PortaApplicativaClient.visure = new Array();
// cache delle posizioni_Sede
PortaApplicativaClient.posizioniSede = new Array();
// cache delle posizioni RI
PortaApplicativaClient.posizioni = new Array();
// cache delle schede persone
PortaApplicativaClient.persone = new Array();

/**
 * Oggetto che fa una richiesta al R.I. (tramite servlet) e segnala il risultato ottenuto ad una callback:
 e' un' handler per MwAjaxUtil
 */ 
function PortaApplicativaRequest()
{
	// booleano per evitare doppie chiamate contemporanee
	this.isOperating = false;
	this.performingRequest = function(performing)
						{
							this.isOperating = performing;
							if (this.vediLoading != undefined)
								this.vediLoading(performing);
						}
	this.manageErrorResponse = function ()
	{
		alert("Errore durante il recupero dati dal Registro delle Imprese");
	}
}

/**
 * cf codice fiscale richiesto
 * callback: metodo che ricevera' la risposta
 */
PortaApplicativaRequest.prototype.visuraCF = function (cf, callback)
{
	if (PortaApplicativaClient.visure[cf] != undefined)
	{
		callback(PortaApplicativaClient.visure[cf]);
		return;
	}

	if (this.isOperating == true)
	{
		alert("Lo stesso oggetto PortaApplicativaRequest non puo' fare piu' richieste contemporaneamente");
		return;
	}

	this.manageSuccessResponse = this.manageVisuraCF;
	this.requestUrl =  'porta-applicativa?command=visura&cf=' + cf;
	this.callback = callback;
	this.keyf = cf;

	MwAjaxUtil.performRequest(this);
}



PortaApplicativaRequest.prototype.manageVisuraCF = function(risposta)
{
	var visura = MwAjaxUtil.parseDOM(risposta);
	
	PortaApplicativaClient.visure[this.key] = visura;
	this.callback(visura);
}

/**
 * Fa una visura cf minimale, ritornando la denominazione, il cf e l'indirizzo dell'impresa, oltre al link per la consultazione del RI (TODO embedded in SOPI, va reso indipendente) 
 * cf codice fiscale richiesto
 * idElement id dell'elemento il cui innerHTML sara' la risposta della servlet
 */
PortaApplicativaRequest.prototype.visuraMinimale = function (cf, idElement)
{
	if (this.isOperating == true)
	{
		alert("Lo stesso oggetto PortaApplicativaRequest non puo' fare piu' richieste contemporaneamente");
		return;
	}

	this.manageSuccessResponse = this.manageVisuraMinimale;
	this.requestUrl =  'porta-applicativa?command=visura&type=html&mode=visura-minimale&cf=' + cf;
		this.keyf = cf;

	this.idElement = idElement;
	MwAjaxUtil.performRequest(this, "text");
}

PortaApplicativaRequest.prototype.manageVisuraMinimale = function(risposta)
{
	document.getElementById(this.idElement).innerHTML = risposta;
}





/**
 * cf codice fiscale richiesto
 * callback: metodo che ricevera' la risposta
 */
PortaApplicativaRequest.prototype.posizioneRI = function (rea, provincia, callback)
{
	if (PortaApplicativaClient.posizioni[rea + provincia] != undefined)
	{
		callback(PortaApplicativaClient.posizioni[rea + provincia]);
		return;
	}

	if (this.isOperating == true)
	{
		alert("Lo stesso oggetto PortaApplicativaRequest non puo' fare piu' richieste contemporaneamente");
		return;
	}

	this.manageSuccessResponse = this.managePosizioneRI;
	this.requestUrl =  'porta-applicativa?command=posizione&rea=' + rea + '&provincia=' + provincia;
	this.callback = callback;
	this.key = rea + provincia;

	MwAjaxUtil.performRequest( this);
}


PortaApplicativaRequest.prototype.managePosizioneRI = function(risposta)
{
	var posizione = MwAjaxUtil.parseDOM(risposta);
	
	PortaApplicativaClient.posizioni[this.key] = posizione;
	this.callback(posizione);
}

/**
 * cf codice fiscale richiesto
 * callback: metodo che ricevera' la risposta
 */
PortaApplicativaRequest.prototype.posizioneSede = function (cf, callback)
{
	if (PortaApplicativaClient.posizioniSede[cf] != undefined)
	{
		callback(PortaApplicativaClient.posizioniSede[cf]);
		return;
	}

	if (this.isOperating == true)
	{
		alert("Lo stesso oggetto PortaApplicativaRequest non puo' fare piu' richieste contemporaneamente");
		return;
	}

	this.manageSuccessResponse = this.managePosizioneSede;
	this.requestUrl =  'porta-applicativa?command=posizione_sede&cf=' + cf;
	this.callback = callback;
	this.key = cf;

	MwAjaxUtil.performRequest( this);
}


PortaApplicativaRequest.prototype.managePosizioneSede = function(risposta)
{
	var posizione = MwAjaxUtil.parseDOM(risposta);
	
	PortaApplicativaClient.posizioniSede[this.key] = posizione;
	this.callback(posizione);
}

