/**
    *
    * Fichier permettant d'ajaxiser les IHMs des simus
    * On clique sur le bouton simuler
    * On génère la partie du code HTML correcpondant au résultat de la simulation en Ajax
    *
    */

/**
    * Initialise l'ajaxisation des simualtions
    *
    * @access public
    * @name initierAjaxSimuProjet
    * @param Event
    *
    */

function initierAjaxSimuProjet(evt)
{
	//Si le formulaire existe avec la div qui l'encapsule 
	if($('formProject') && $('highlightSimulez') && $('duree') && $('mensualite') && $('montant') && $('projet'))
	{
		//On doit avoir au moins un des deux boutons simuler ou recalculer
		if($('frmMontantSubmit'))
		{			
			Event.observe($('frmMontantSubmit'),'click',calculSimulationProjet);
		}
		else if($('formProjectSubmit'))
		{		
			Event.observe($('formProjectSubmit'),'click',calculSimulationProjet);
		}		
	}
	
	resizeIframe();
}


/**
    * Fonction de callBack après la fin de l'animation grandissante
    * On désactive les boutons qui sont susceptibles de déclencher l'appel ajax et d'interférer à l'animation
    *
    * @access public
    * @name endAnimationSimu
    * @param 
    *
    */

function endAnimationSimu(obj)
{	
	if($('frmMontantSubmit'))
	{		
		$('frmMontantSubmit').disabled = false;
		$('frmMontantSubmit').src = '/images/btn_recalculer.gif';
	}
	else if($('formProjectSubmit'))
	{
		$('formProjectSubmit').disabled = false;
		$('formProjectSubmit').src = '/images/btn_faireUneSimulation_o.gif';		
	}
	
	
	resizeIframe();
}
	


/**
    * Fonction de callBack avant le démarrage de l'animation grandissante
    * On réactive les boutons qui sont susceptibles de déclencher l'appel ajax (sinon l'IHM reste figé et plus rien ne se passe)
    *
    * @access public
    * @name startAnimationSimu
    * @param 
    *
    */

function startAnimationSimu(obj)
{	
	if($('frmMontantSubmit'))
	{
		$('frmMontantSubmit').disabled = true;		
		$('frmMontantSubmit').src = '/images/loader.gif';
	}
	else if($('formProjectSubmit'))
	{
		$('formProjectSubmit').disabled = true;		
		$('formProjectSubmit').src = '/images/loader.gif';
	}

	
}


/**
    * Redimensione l'iframe
    *
    * @acces public
    * @name resizeIframe
    *
    */

function resizeIframe(obj)
{
	var objIframe = window.parent.document.getElementById('iframeSimulation');	
	if(objIframe && $('pRBISimulation'))
	{		
		objIframe.style.overflow = 'hidden';
		objIframe.style.height = $('pRBISimulation').getHeight() * 1.05;		
	}
}

/**
    * Calcul la simulation en Ajax en interrogeant le moteur de simulation via l'action "calculSimulationProjet" sur la classe "CommandSimulationProjet"
    *
    * @access public
    * @name calculSimulationProjet
    *
    */

function calculSimulationProjet(evt)
{		
	if(montantMaxCp != 0 && !plafond_cp)
	{		
		if( ( (!isNaN($F('montant')) && $F('montant') > montantMaxCp) || $F('montant') == '' ) || isNaN($F('montant')))
		{		
			Event.stop(evt);
		}
		else
		{
			return;
		}
		
		if($('contextForm'))
		{			
			disparition = Effect.Shrink
			(
				'contextForm'
				, 
				{
					duration	:	0.9
					,
					beforeStart	: 	startAnimationSimu					
					,
					afterFinish	:	ajaxSimulation	
				}
			);		
		}
		else
		{
			ajaxSimulation();
		}
		
	}
}

/**
    *
    * Envoie la requête Ajax qui récupère la simulation
    * On poste les données sur la page en cours
    *
    * @access public
    * @name ajaxSimulation
    *
    */
	
function ajaxSimulation()
{
	var url = '?';    
	var myAjax = new Ajax.Request
	(
		url,
		{
			asynchronous:true
			,
			method: 'post'
			,      
			parameters:'projet='+$F('projet')+'&montant='+$F('montant')+'&duree='+$F('duree')+'&mensualite='+$F('mensualite')+'&action=calculSimulationAjax'
			,
			onComplete: reponseSimuOk
		}
	);
}

/**
    * Récupère la réponse de la simulation quand tout se passe bien
    *
    * @access public
    * @name reponseSimuOk
    * @param XMLHttpRequest
    *
    */

function reponseSimuOk(req)
{	
	if($('highlightSimulez'))
	{		
		$('highlightSimulez').innerHTML = req.responseText;
		//On réaffecte les évènement
		if($('frmMontantSubmit'))
		{			
			Event.observe($('frmMontantSubmit'),'click',calculSimulationProjet)
		}
		else if($('formProjectSubmit'))
		{			
			Event.observe($('formProjectSubmit'),'click',calculSimulationProjet)
		}
		
		var ErrorElts = doc.getElementsByClassName('alertClassBox');
		
		for(i = 0 ; i < ErrorElts.length ; i++)
		{			
			if($(ErrorElts[i].id))
			{				
				Effect.BlindDown
				(
					ErrorElts[i].id, 
					{
						duration	:	0.9	
						,
						beforeUpdate :	resizeIframe
						,
						afterUpdate :	resizeIframe
					}
				);
			}
		}
		
		if($('contextForm'))
		{			
			Effect.Grow
			(
				'contextForm', 
				{
					duration	:	0.9
					,
					fps:50
					,					
					beforeStart	: 	startAnimationSimu
					,
					afterFinish	:	endAnimationSimu
					,
					beforeUpdate :	resizeIframe
					,
					afterUpdate : resizeIframe
				}
			);			
		}
		else
		{
			endAnimationSimu();
		}
		
	}
}