/**
 * @todo: documentar la siguiente lista de funciones
 */
var failure = function(t){
	alert("Error en la aplicacion php");
}

var completed = function(t){
	//alert(t.responseText);
}

var error404 = function(t){
	alert('Recurso no encontrado');
}

var success = function(t)
{
	//resp = t.responseText;
	resp = t;
	canvasId = 'results';
	showResults( resp, canvasId );
	
    $$( '.searchTrigger' ).each(
        function( trigger )
        {
            trigger.addEvent(
                'click',
                function( e )
                {
                    e = new Event( e );
                    follow( this.href );
                    e.stop();
                }//click handler
            );//trigger.onclick
        }
    );//each

    handlePlots();
    
    handlePlots( 'info', 'info', 'moreInfo', 'moreInfoRI' );

    handleExistencesView();
    
    loadResultsToolbar();

    // scroll to results
    document.location.href = '#searchDigest';
}

var loading = function(t) {
	var loadingCaption = document.getElementById('progress');
	var loadingClassSelector = 'loading';
	setCSSClass( loadingCaption, loadingClassSelector );
}

var loaded = function(t) {
	/*
	var loadingCaption = document.getElementById('progress');
	var loadingClassSelector = 'loaded';
	setCSSClass( loadingCaption, loadingClassSelector );
	*/
}

function showResults( resp, canvasId ) {
	var resultContainer = document.getElementById(canvasId);

	resultContainer.innerHTML = resp;

	setCSSClass( resultContainer, 'show' );

	var loadingCaption = document.getElementById('progress');
	var loadingClassSelector = 'loaded';
	setCSSClass( loadingCaption, loadingClassSelector );
}

/**
 * Crea un arreglo asociativo de parámetros para la solicitud ajax
 * a partir del formulario recibido como parámetro
 * @param DOMElement theForm Formulario que contiene las entradas
 *							 del usuario que formarán parte de la
 *							 solicitud AJAX
 * @return associative array parámetros que configuran la solicitud ajax
 */
function loadConfigurationFromForm( theForm ) {

	var queryString  = '';

	for ( var i = 0; i < theForm.elements.length; i++ ) {
		queryString += theForm.elements[i].name + '=' + theForm.elements[i].value;

		if ( i < theForm.elements.length - 1 )
			queryString += '&';
	}

	/*
    var requestSetup = {
		//asynchronous: false,
		asynchronous: true,

		onSuccess:	success,
		onFailure:	failure,
		onLoading:	loading,
		onLoaded:	loaded,
		onComplete: completed,
		on404:		error404,

		method: 	  'post',
		postBody:	  queryString
	}
	*/
	
	/*
	var requestSetup = {
		method:    'post',
		async:     true,
		onRequest: loading,
		onSuccess: success,
		onFailure: failure,

		postBody:  queryString
	};
	*/

	var requestSetup = {
		method:    'get',
		async:     true,
		onRequest: loading,
		onSuccess: success,
		onFailure: failure,

		data:      queryString
	};

	return requestSetup;
}

/**
 * Crea un arreglo asociativo de parámetros para la solicitud ajax
 * a partir del formulario recibido como parámetro
 * @param DOMElement theForm Formulario que contiene las entradas
 *							 del usuario que formarán parte de la
 *							 solicitud AJAX
 * @return associative array parámetros que configuran la solicitud ajax
 */
function loadConfigurationFromQueryString( theQueryString ) {
	/*
    var requestSetup = {
		asynchronous: true,

		onSuccess:	  success,
		onFailure:	  failure,
		onLoading:	  loading,
		onLoaded:	  loaded,
		onComplete:   completed,
		on404:		  error404,

		method: 	  'post',
		postBody:	  theQueryString
	}
	*/

	/*
    var requestSetup = {
		method:    'post',
		async:     true,
		onRequest: loading,
		onSuccess: success,
		onFailure: failure,

		postBody:  theQueryString
	};
	*/

	var requestSetup = {
		method:    'get',
		async:     true,
		onRequest: loading,
		onSuccess: success,
		onFailure: failure,

		data:      theQueryString
	};

	return requestSetup;
}

/**
 * Obtiene el resultado de la solicitud remota empleando para ello un
 * objeto AJAX
 * @return string la respuesta del servidor
 * @param string request La solicitud que se enviará al servidor
 * @param associative array requestSetup Configuración inicial para la
 *							solicitud AJAX
 */
//function getResultsFor( request, requestSetup ) {
function getResultsFor( url, requestSetup )
{
	//request = new Ajax.Request( request, requestSetup );
	//return request.transport.responseText;

	var myRequest = new Ajax( url, requestSetup ).request();
}

