/**
 * fichier de class js pour gérer les listes du module de recherche
 */

Event.observe( window	, 'load' , myLoadSearch );

function myLoadSearch()
{
	// création des observateurs
	if( $('theme') )Event.observe('theme'		, 'change' , paramsSearch.updateParams.bindAsEventListener(paramsSearch));
	if( $('region') )Event.observe('region'		, 'change' , paramsSearch.updateParams.bindAsEventListener(paramsSearch));
	if( $('hebergement') )Event.observe('hebergement'	, 'change' , paramsSearch.updateParams.bindAsEventListener(paramsSearch));
	
	$$('input.pictos').each( function(e){Event.observe( $(e)	, 'change' , paramsSearch.updateParams.bindAsEventListener(paramsSearch));} );
	
}

var paramsSearch = {

	updateParams: function(event) 
	{
		var elt = Event.element(event);
		//console.log(elt.id);
		
		/** Form.serialize( true ) :: Serialize form data to a string suitable for Ajax requests (default behavior) 
		 * 							 or, if optional getHash evaluates to true, an object hash where keys are form control names and values are data.
		 */
		xajax_xjsUpdateParams( elt.id , $('boxSearch').serialize( true ) );
		
	}
};


/**
 * Fonction d'initialisation
 * 
 * :: on attache les evenement onchange aux listes deroulantes
 */
function myDateLoad()
{
	var strIdSejour = 0;
	var strValueTypeHebergement = getTypeHebergementValue();
	if( document.getElementById('theme_reserver_liste') &&  $('theme_reserver_liste').value != '' )strIdSejour = $('theme_reserver_liste').value;
	if( document.getElementById('balneo_reserver_liste') &&  $('balneo_reserver_liste').value != '' )strIdSejour = $('balneo_reserver_liste').value;
	
	// on update les selects de fin
	xajax_xjsUpdateDates( 'dateDebut_mois' , $('dateDebut_mois').value , $('dateDebut_jours').value , $('dateFin_mois').value , $('dateFin_jours').value , $('dateDebut_reservations').value , $('dateFin_reservations').value , strValueTypeHebergement , strIdSejour );
	//xajax_xjsUpdateDates( 'dateDebut_jours' , $('dateDebut_mois').value , $('dateDebut_jours').value , $('dateFin_mois').value , $('dateFin_jours').value );
	//xajax_xjsUpdateDates( 'dateFin_mois' , $('dateDebut_mois').value , $('dateDebut_jours').value , $('dateFin_mois').value , $('dateFin_jours').value );	
	
	// on cree les evenements sur les select des dates
	Event.observe('dateDebut_mois'	, 'change' , selectDate.updateDate.bindAsEventListener(selectDate));
	Event.observe('dateDebut_jours'	, 'change' , selectDate.updateDate.bindAsEventListener(selectDate));
	Event.observe('dateFin_mois'	, 'change' , selectDate.updateDate.bindAsEventListener(selectDate));
	Event.observe('dateFin_jours'	, 'change' , selectDate.updateDate.bindAsEventListener(selectDate));
	
	// on cree les evenements sur le type d'hebergement
	if(document.getElementById('location_reserver'))Event.observe('location_reserver'	, 'click' , selectDate.updateDate.bindAsEventListener(selectDate));
	if(document.getElementById('dp_reserver'))Event.observe('dp_reserver'	, 'click' , selectDate.updateDate.bindAsEventListener(selectDate));
	if(document.getElementById('pc_reserver'))Event.observe('pc_reserver'	, 'click' , selectDate.updateDate.bindAsEventListener(selectDate));
	
	// on cree les evenements sur la liste deroulante des sejours
	//if(document.getElementById('theme_reserver_liste'))Event.observe('theme_reserver_liste'	, 'change' , selectHeb.updateDate.bindAsEventListener(selectHeb));
	//if(document.getElementById('balneo_reserver_liste'))Event.observe('balneo_reserver_liste'	, 'change' , selectHeb.updateDate.bindAsEventListener(selectHeb));
	
	// on cree les evenements sur le type d'hebergement des sejours (en cas de rechargement)
	if(document.getElementById('dp_typeHebTheme'))Event.observe('dp_typeHebTheme'	, 'click' , selectHeb.updateDate.bindAsEventListener(selectHeb));
	if(document.getElementById('pc_typeHebTheme'))Event.observe('pc_typeHebTheme'	, 'click' , selectHeb.updateDate.bindAsEventListener(selectHeb));
	if(document.getElementById('dp_typeHebBalneo'))Event.observe('dp_typeHebBalneo'	, 'click' , selectHeb.updateDate.bindAsEventListener(selectHeb));
	if(document.getElementById('pc_typeHebBalneo'))Event.observe('pc_typeHebBalneo'	, 'click' , selectHeb.updateDate.bindAsEventListener(selectHeb));
}

var selectDate = {
  	// some stuff our 'generic' function needs

	updateDate: function(event) 
	{
		// on place la div "en attente"
		//getAttente();
		
		var strIdSejour = 0;
		var elt = Event.element(event);
		
		// recup du type d'hebergement
		var strValueTypeHebergement = getTypeHebergementValue();
		
		// recup du sejour
		if( document.getElementById('theme_reserver_liste') &&  $('theme_reserver_liste').value != '' )strIdSejour = $('theme_reserver_liste').value;
		if( document.getElementById('balneo_reserver_liste') &&  $('balneo_reserver_liste').value != '' )strIdSejour = $('balneo_reserver_liste').value;
		
		//alert( 'sejour : ' + strIdSejour + ' et heb : ' + strValueTypeHebergement );
		
		xajax_xjsUpdateDates( elt.id , $('dateDebut_mois').value , $('dateDebut_jours').value , $('dateFin_mois').value , $('dateFin_jours').value , $('dateDebut_reservations').value , $('dateFin_reservations').value , strValueTypeHebergement , strIdSejour );
	}
};

var selectHeb = {

	updateDate: function(event) 
	{
		// on place la div "en attente"
		//getAttente();
		
		var strIdSejour = 0;
		var elt = Event.element(event);
		
		// recup du type d'hebergement
		var strValueTypeHebergement = getTypeHebergementValue();
		//alert(strValueTypeHebergement);
		
		// recup du sejour
		if( document.getElementById('theme_reserver_liste') &&  $('theme_reserver_liste').value != '' )strIdSejour = $('theme_reserver_liste').value;
		if( document.getElementById('balneo_reserver_liste') &&  $('balneo_reserver_liste').value != '' )strIdSejour = $('balneo_reserver_liste').value;
		
		//alert( 'sejour : ' + strIdSejour + ' et heb : ' + strValueTypeHebergement );
		
		xajax_xjsUpdateDates( elt.id , null , null , null , null , $('dateDebut_reservations').value , $('dateFin_reservations').value , strValueTypeHebergement , strIdSejour );
		//xajax_xjsUpdateDates( elt.id , $('dateDebut_mois').value , $('dateDebut_jours').value , $('dateFin_mois').value , $('dateFin_jours').value  , $('dateDebut_reservations').value , $('dateFin_reservations').value , strValueTypeHebergement , strIdSejour );
	}
};


function getTypeHebergementValue()
{
	// on recupere le bt radio coché
	var strValeurBtRadio = getRadioCheckedValue( 'typeSejours_reservations' );
	
	switch( strValeurBtRadio )
	{
		default:return null;
		case 'loc':
		case 'dp':
		case 'pc':
			return strValeurBtRadio;
			break;
		case 'theme':
			return getRadioCheckedValue( 'typeHebTheme_reservations' );
			break;
		case 'balneo':
			return getRadioCheckedValue( 'typeHebBalneo_reservations' );
			break;
	}
	
}
function getRadioCheckedValue( strName )
{
	var strValeurBtRadio= null;
	var LesRadios = document.getElementsByName( strName );
	for (i=0; i<LesRadios.length; i++)if (LesRadios[i].checked)strValeurBtRadio = LesRadios[i].value;
	return strValeurBtRadio;
}

/**
 * TODO :: pas encore mis en place
 */
function getAttente()
{
	if (!document.getElementById('enAttente')) 
	{
		var div = Builder.node('div', {
			id: 'enAttente',
			className: 'enAttenteOn'
		}, 'Chargement...');
		document.body.appendChild($(div));
	}
	
	//alert( 'ok' );
	
}

