/**
 * Objet javascript permettant de gérer le formulaire
 * de reservation Small and Medium Meetings
 */
var Meetings = {
	bookingEngineViewBean: null,
    meeting : null,
    errorViewBean : null,
    nightsBeforeAndAfter : 2,
    mDateIn : null,
    mDateOut : null,
    rDateIn : null,
    rDateOut : null,
	rCobDateOut: null, //variable pour page cobrand
    nbDays : null,
    initMeetingRoomDelay : null,
    initBedroomDelay : null,
    meetingRoomNightIndex : null,
    bedroomNightIndex : null,
    
    /**
     * Liste des noms d'objets à utiliser.
     */
		getBeans: function() {
         return "BookingEngineViewBean;ErrorViewBean";
    },
    
    /**
     * Initialisation de la variable JSON
     */
    initJSON: function() {
    	var num;
        try {
            for( num in beans)
            {
                // A cause de prototype, il ne faut récupérer que nos objet et pas ceux de prototype.
                if(beans.hasOwnProperty(num)) {
                    if("BookingEngineViewBean" == beans[num].nom && null != beans[num].bean){
                        this.bookingEngineViewBean = beans[num].bean;    
		                    if(this.bookingEngineViewBean.meeting)
			    								this.meeting = this.bookingEngineViewBean.meeting;
	    							}
	    							
	    							if("ErrorViewBean" == beans[num].nom && null != beans[num].bean){
					    			    this.errorViewBean = beans[num].bean;
					    			}
                }
            }
        }
        catch(e)
        {
            //console.log(e);
        }
    },
        
    /**
     * Ecrivez votre code sur l'initialisation des affichage de la page
     * ici.
     * Cette methode est appelée sur le onload de la page.
     */
    rewrite: function() {
    	  
    	  if(this.meeting){
	    	  // <-- Affiche ou non les blocs Salle ou Chambre selon les cases cochees sur le formulaire de la home
	    	  /*if($('meetingRoom')){
	    	  	if(this.meeting.meetingRoom == true){
	    	  		$('meetingRoom').checked = true;
	    	  		$('meetingRoom').value = 1;
	    	  	}
	    	  }
	    	   if($('bedroom')){
	    	  	if(this.meeting.bedroom == true){
	    	  		$('bedroom').checked = true;
	    	  		$('bedroom').value = 1;
	    	  	}
	    	  }*/
	    	  // -->
	    	}
    	  // Réécriture du formulaire avec préremplissage des champs Ville et Pax si info disponible
    	  this.rewriteForm();
    	  
    	  if($("allBrands_YES"))
    	  	Event.observe($("allBrands_YES"), "click", function(event){Meetings.rewriteBrandSelection();});
    	  if($("allBrands_NO"))
    	  	Event.observe($("allBrands_NO"), "click", function(event){Meetings.rewriteBrandSelection();});
    	  	
    	  if($("allBrands_YES"))
    	  	Event.observe($("allBrands_YES"), "change", function(event){Meetings.rewriteBrandSelection();});
    	  if($("allBrands_NO"))
    	  	Event.observe($("allBrands_NO"), "change", function(event){Meetings.rewriteBrandSelection();});
				
				// Observe sur click ET change pour serialize
		if(!$('cobrand'))  	{
    	  if($("meetingRoom")) 
    	  				Event.observe($("meetingRoom"), "click", 
    	  function(event){ Meetings.rewriteMeetingAndBedroom(); } );

    	  if($("meetingRoom"))
    	      	  	Event.observe($("meetingRoom"), "change", 
    	  function(event){ Meetings.rewriteMeetingAndBedroom(); } );

    	  
    	  if($("bedroom")) Event.observe($("bedroom"), "click", function(event){ 
    	  Meetings.rewriteMeetingAndBedroom(); } ); 

    	  if($("bedroom"))
    	      	  	Event.observe($("bedroom"), "change", 
    	  function(event){ Meetings.rewriteMeetingAndBedroom(); } ); 
		}
    	  this.initCalendars(false); 
				//this.attachSubmitLink(); 
				this.attachSubmitLinkAction();	

    	  if(navigator.userAgent.search(/MSIE 6/) != -1 && navigator.userAgent.search(/opera/) == -1){ 
    	 	 this.initializeTooltipWatcher();
    	 	}
    	 	
    	 	this.enterKeyPress("meetingsSearchEngine");
    	 	
    	 	/* Controle de serialization ou pas */
				/*var chaine = window.location.href;
				if(chaine.search(/#/) == -1 && chaine.search(/&/) == -1 && chaine.search(/=/) == -1){ 
    	 	 			$('meetingRoom').checked = true;
	    	  		$('meetingRoom').value = 1;
	    	  		Meetings.rewriteMeetingAndBedroom();
    	 	}*/
    	 	
    	 	if(this.meeting){
    	 		if(this.meeting.meetingRoom == true){
    	 			$('meetingRoom').checked = true;
  	  			$('meetingRoom').value = 1;
    	 		}
    	 		
    	 		if(this.meeting.bedroom == true){
    	 			$('bedroom').checked = true;
  	  			$('bedroom').value = 1;
  	  			$('bedroomNumber').value = this.meeting.bedroomNumber;
    	 		}
    	 		Meetings.rewriteMeetingAndBedroom();
    	 	}
    	 	else{
    	 		if(getUrlParameter('meetingRoom') == "" && getUrlParameter('bedroom') == ""){
					if($('meetingRoom')){
	    	 		$('meetingRoom').checked = true;
	  	  			$('meetingRoom').value = 1;
					}
	  	  		Meetings.rewriteMeetingAndBedroom();
	    	 	}
    	 	}
    },

    rewriteForm: function(){
			if(this.errorViewBean) {
            $('errorMessage_meetingsSearchEngine').innerHTML = this.errorViewBean.translatedMessage;
       }
			
    	if( this.bookingEngineViewBean){
         		var formular=null; 
    	  if(document.forms["meetingsLightSearchEngine"]){ formular = 
    	  document.forms["meetingsLightSearchEngine"]; 
    	  if(this.bookingEngineViewBean.destination) 
    	  formular.hotel_ou_ville.value=this.bookingEngineViewBean.destination; 
    	  } else if (document.forms["meetingsSearchEngine"]){ formular = 
    	  document.forms["meetingsSearchEngine"]; 
    	  if(this.bookingEngineViewBean.destination) 
    	  formular.hotel_ou_ville.value=this.bookingEngineViewBean.destination;
        if(this.bookingEngineViewBean.meetingPromotionCode) 
    	  formular.meetingPromotionCode.value=this.bookingEngineViewBean.meetingPromotionCode;         
    	  if(this.meeting) formular.pax.value=this.meeting.attendiesNumber;

	    		this.setBrandSelection();
	     	    		//this.rewriteMeetingAndBedroom();	    		
}    					    	
}
},	 

		// Recupere les parametres passés dans l'url pouvant 
		// déterminer la présélection de certaines marques
	  setBrandSelection: function(formular) {
	    	var chainSelection = getUrlParameter("code_chaine");
	    	if(chainSelection){
	    		$("allBrands_NO").checked=true;
	    		chainSelection.split("|").each(
						function(element){
			    		if($("code_chaine_"+element))
								$("code_chaine_"+element).checked=true;
		        }	    			
	    		)	    							
				}
				this.rewriteBrandSelection();
	  },
	  
	  // Affiche ou masque la liste des checkbox des marques 
	  // selon le bouton radio coché (Toutes les marques ou Sélection)
	  rewriteBrandSelection: function() {
	  		var checkboxes = $$("#brandSelection input");
		  	if($("allBrands_YES").checked){
		  		$('brandSelection').addClassName('hide');
					checkboxes.each(
						function(element){
							element.disabled=true;
		        }
					)  	  		
		  	} else if($("allBrands_NO").checked) {
		  		$('brandSelection').removeClassName('hide');
					checkboxes.each(
						function(element){
							element.disabled=false;
		        }
					)  	  		
				}
	  },
	  
    enterKeyPress : function(formName){
			Event.observe(
				document,
				'keyup',
				function(event){
					if(event.keyCode == 13){
						Cleaner.cleanDefaultValue($('hotel_ou_ville_label'));
						Meetings.checkForm();
					}
				}
			);
		},
	    
	  // Affiche ou masque les blocs de formulaire pour la salle ou les chambres
	  // initialisation selon les cases cochées sur la home
	  rewriteMeetingAndBedroom: function() {
	  		
			if($("meetingRoomBloc")){
				var inputs = $$("#meetingRoomBloc input");
				var selects = $$("#meetingRoomBloc select");
				if($("meetingRoom").checked){	  	
					inputs.each(function(element){element.disabled=false;});	  	 	  			
					selects.each(function(element){element.disabled=false;});					
					$("meetingRoomBloc").removeClassName('hide');
					$("infoOptionnelles").removeClassName('hide');
					$('meetingRoom').value = 1;
				} else {
					inputs.each(function(element){element.disabled=true;});	  	 	  			
					selects.each(function(element){element.disabled=true;});						  			
					$("meetingRoomBloc").addClassName('hide');
					$("infoOptionnelles").addClassName('hide');
					$('meetingRoom').value = 0;
				}
			}
	  	
			if($("bedroomBloc")){	  	 	
				var inputs = $$("#bedroomBloc input");
				var selects = $$("#bedroomBloc select");
				if($("bedroom").checked){	  			
					inputs.each(function(element){element.disabled=false;});	  	 	  			
					selects.each(function(element){element.disabled=false;});					
					$("bedroomBloc").removeClassName('hide');
					$('bedroom').value = 1;
				} else {
					inputs.each(function(element){element.disabled=true;});	  	 	  			
					selects.each(function(element){element.disabled=true;});						  			
					$("bedroomBloc").addClassName('hide');
					$('bedroom').value = 0;
				}
			}
			
			// Dans le bloc bedroom, affiche ou masque l'un ou l'autre des calendriers.
			
			// Cas : Reservation d'une salle et de chambres
			if($('meetingRoom').checked && $('bedroom').checked){
				var inputsRwM = $$("#roomsWithMeeting input");
				var selectsRwM = $$("#roomsWithMeeting select");
				inputsRwM.each(function(element){element.disabled=false;});	  	 	  			
				selectsRwM.each(function(element){element.disabled=false;});	
				
				var inputsRonly = $$("#roomsOnly input");
				var selectsRonly = $$("#roomsOnly select");
				inputsRonly.each(function(element){element.disabled=true;});	  	 	  			
				selectsRonly.each(function(element){element.disabled=true;});
				
				$("roomsWithMeeting").removeClassName("hide");
				$("roomsOnly").addClassName("hide");	
			}
			
			// Cas : Reservation de chambres seulement
			if(!$('meetingRoom').checked && $('bedroom').checked){
				var inputsRwM = $$("#roomsWithMeeting input");
				var selectsRwM = $$("#roomsWithMeeting select");
				inputsRwM.each(function(element){element.disabled=true;});	  	 	  			
				selectsRwM.each(function(element){element.disabled=true;});	
				
				var inputsRonly = $$("#roomsOnly input");
				var selectsRonly = $$("#roomsOnly select");
				inputsRonly.each(function(element){element.disabled=false;});	  	 	  			
				selectsRonly.each(function(element){element.disabled=false;});
				
				$("roomsWithMeeting").addClassName("hide");
				$("roomsOnly").removeClassName("hide");	
			}
			
			
	  },
	  
	  // Initialisation des calendriers (salle de réunion et chambre)
	  // avec comme parametre soit la date du jour, soit une date a J+X
	  initCalendars : function(clicked){
			
			var jPlusX= new Date();
			var today= new Date();
			
			if(this.bookingEngineViewBean){
        if(this.meeting){
        	if(this.meeting.meetingRoom == true && this.meeting.meetingRoomDayIn && this.meeting.meetingRoomMonthIn && this.meeting.meetingRoomYearIn){
        		var mDayIn = Number(this.meeting.meetingRoomDayIn);
        		var mMonthIn = Number(this.meeting.meetingRoomMonthIn)-1;
        		var mYearIn = Number(this.meeting.meetingRoomYearIn);
        		jPlusX = new Date(mYearIn, mMonthIn, mDayIn);
	  				this.initMeetingRoomDelay = 0;
	  				this.meetingRoomNightIndex = this.meeting.meetingRoomDaysNumber-1;
	  			}
	  			else{
	  				this.initMeetingRoomDelay = 2;
	  				jPlusX = new Date(jPlusX.getFullYear(), jPlusX.getMonth(), jPlusX.getDate());
	  				this.meetingRoomNightIndex = 0;
	  			}
	  			
	  			if(this.meeting.bedroom == true && this.meeting.bedroomDayIn && this.meeting.bedroomMonthIn && this.meeting.bedroomYearIn){
        		var rDayIn = Number(this.meeting.bedroomDayIn);
        		var rMonthIn = Number(this.meeting.bedroomMonthIn)-1;
        		var rYearIn = Number(this.meeting.bedroomYearIn);
        		today = new Date(rYearIn, rMonthIn, rDayIn);
	  				this.initBedroomDelay = 0;
	  				this.bedroomNightIndex = this.bookingEngineViewBean.nightsNumber-1;
	  			}
	  			else{
	  				this.initBedroomDelay = 2;
	  				today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	  				this.bedroomNightIndex = 0;
	  			}
        }		    	
				else{
					this.initMeetingRoomDelay = 2;
					this.initBedroomDelay = 2;
					jPlusX = new Date(jPlusX.getFullYear(), jPlusX.getMonth(), jPlusX.getDate());
					today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
					this.bedroomNightIndex = 0;
					this.meetingRoomNightIndex = 0;
				}
			}
			
	  	jPlusX.setTime(jPlusX.getTime() + Date.HOUR + (Date.DAY*Number(this.initMeetingRoomDelay)));
			$('arrivee1').value = jPlusX.print(Calendar._TT.DEF_DATE_FORMAT);
			$('arrivee1_printedDate').innerHTML = jPlusX.print(Calendar._TT.FULL_DATE_FORMAT);
			//console.log("ecriture init calendar : " + jPlusX);
			$('meetingRoomDayIn').value = jPlusX.getDate();
			$('meetingRoomMonthIn').value = jPlusX.getMonth()+1;
			$('meetingRoomYearIn').value = jPlusX.getFullYear();
			this.initMeetingRoomDelay = 2;
	  	
	  	var calendar1 = new MultiCalendars({
				'arrivalID': 'arrivee1',
				'buttonID': 'date_arrivee_img1',
				'arrivalDayID': 'meetingRoomDayIn',
				'arrivalMonthID': 'meetingRoomMonthIn',
				'arrivalYearID': 'meetingRoomYearIn',
				'nightsID': 'meetingRoomDaysNb',
				'departureID': 'depart1',
				'calType' : 'meeting',
				'jPlusX' : this.initMeetingRoomDelay,
				'maxStay' : this.bookingEngineViewBean.meetingMaxStay,
				'maxPeriod' : this.bookingEngineViewBean.maxPeriod
			});
			
	  	today.setTime(today.getTime() + Date.HOUR + (Date.DAY*Number(this.initBedroomDelay)));
			$('arrivee2').value = today.print(Calendar._TT.DEF_DATE_FORMAT);
			$('arrivee2_printedDate').innerHTML = today.print(Calendar._TT.FULL_DATE_FORMAT);
			$('jour_arrivee').value = today.getDate();
			$('mois_arrivee').value = today.getMonth()+1;
			$('annee_arrivee').value = today.getFullYear();
			
			var calendar2 = new MultiCalendars({ 
				'arrivalID': 'arrivee2',           
				'buttonID': 'date_arrivee_img2',   
				'arrivalDayID': 'jour_arrivee',   
				'arrivalMonthID': 'mois_arrivee', 
				'arrivalYearID': 'annee_arrivee', 
				'nightsID': 'nb_nuit',            
				'departureID': 'depart2',
				'calType' : 'default',
				'jPlusX' : this.initBedroomDelay,
				'maxStay' : this.bookingEngineViewBean.meetingMaxStay,
				'maxPeriod' : this.bookingEngineViewBean.maxPeriod
			});  
			
			if($('roomsDateIn') && $('roomsDateOut') && $('meetingRoomDaysNb')){
				Event.observe(
					$('roomsDateIn'),
					'change',
					function(){
						var tmp = $('roomsDateIn').value.split(',');
	  				Meetings.rDateIn = new Date(tmp[0], tmp[1]-1, tmp[2]);
	  				Meetings.rDateIn = Meetings.rDateIn.setDateMidday();
						Meetings.rDateOut = new Date(Meetings.rDateIn.getTime() + Meetings.nbDays * Date.DAY);
						Meetings.updateSelectRoomsDateOutFromDateIn();
					}
				);
				
				Event.observe(
					$('roomsDateOut'),
					'change',
					function(){
						Meetings.updateStayLentghInNights();
					}
				);
			}                        
	  },
	  
	  rewriteCalendarArrivalField : function(){
	  	if($('arrivee1') && this.mDateIn){
				$('meetingRoomDayIn').value = this.mDateIn.getDate();
				$('meetingRoomMonthIn').value = this.mDateIn.getMonth()+1;
				$('meetingRoomYearIn').value = this.mDateIn.getFullYear();
	  	}
	  },
	  
	  // MAJ de la liste des dateIn possible dans le select 
	  // en fonction de la dateIn choisie pour la salle de réunion
	  updateSelectRoomsDateIn : function(dateIn, dateOut){
	  	this.clearSelectOptions('roomsDateIn');
	  	
	  	var dateIn_startDate = new Date(this.mDateIn.getTime() - Meetings.nightsBeforeAndAfter * Date.DAY);
	  	var tempDate = new Date(dateIn_startDate);
	  	while(tempDate <= this.mDateOut){
	  		var tempJour = Calendar._DN[tempDate.getDay()];
	  		var tempDatePrinted = tempDate.print(Calendar._TT.DEF_DATE_FORMAT);
	  		var tempOption = document.createElement('option');
	  		tempOption.text = tempJour +' '+tempDatePrinted;
	  		tempOption.value = tempDate.getFullYear()+','+(tempDate.getMonth()+1)+','+tempDate.getDate();
	  		try
		    {
		    	$('roomsDateIn').add(tempOption,null); // standards compliant
		    }
		 		 catch(ex)
		    {
		    	$('roomsDateIn').add(tempOption); // IE only
		    }
	  		tempDate.setTime(tempDate.getTime() + Date.DAY);
	  	}
	  	$('roomsDateIn').options[Meetings.nightsBeforeAndAfter].selected = true;
	  	var tmp = $('roomsDateIn').value.split(',');
	  	this.rDateIn = new Date(tmp[0], tmp[1]-1, tmp[2]);
	  	this.rDateIn = this.rDateIn.setDateMidday();
	  	this.updateSelectRoomsDateOutFromCalendar();
	  },
	  
	  // MAJ de la liste des dateOut quand une nouvelle dateIn ou 
	  // le nombre de nuit/jour sont changés depuis 
	  // le calendrier de la salle de réunion
	  updateSelectRoomsDateOutFromCalendar : function(){
	  	this.clearSelectOptions('roomsDateOut');
	  	var datesOutIndex = new Array();
	  	var i = 0;
	  	var dateOut_endDate = new Date(this.mDateOut.getTime() + Meetings.nightsBeforeAndAfter * Date.DAY);
	  	var tempDate = new Date(this.rDateIn.getTime() + Date.DAY);

	  	while(tempDate <= dateOut_endDate){
	  		var tempJour = Calendar._DN[tempDate.getDay()];
	  		var tempDatePrinted = tempDate.print(Calendar._TT.DEF_DATE_FORMAT);
	  		var tempOption = document.createElement('option');
	  		tempOption.text = tempJour +' '+tempDatePrinted;
	  		tempOption.value = tempDate.getFullYear()+','+(tempDate.getMonth()+1)+','+tempDate.getDate();
	  		
	  		try
		    {
		    	$('roomsDateOut').add(tempOption,null); // standards compliant
		    }
		 		 catch(ex)
		    {
		    	$('roomsDateOut').add(tempOption); // IE only
		    }
		    datesOutIndex[tempDate.getTime()] = i;
	  		tempDate.setTime(tempDate.getTime() + Date.DAY);
	  		i += 1;
	  	}

	  	if($('meetingRoomDaysNb').value != 1){
	  		$('roomsDateOut').options[datesOutIndex[this.mDateOut.getTime()]].selected = true;
	  	}
			this.updateStayLentghInNights();
			this.nbDays = Number($('meetingRoomDaysNb').value);
			this.rDateOut = this.mDateOut;
	  },
	  
	  // MAJ de la liste de dateOut quand une date In 
	  // est choisie depuis la liste déroulante
	  updateSelectRoomsDateOutFromDateIn : function(){
	  	this.clearSelectOptions('roomsDateOut');
	  	var datesOutIndex = new Array();
	  	var i = 0;
	  	var dateOut_endDate = new Date(this.mDateOut.getTime() + Meetings.nightsBeforeAndAfter * Date.DAY);
	  	
	  	if(this.rDateIn < this.mDateIn){
	  		var tempDate = new Date(this.mDateIn.getTime());
			}
			else{
				var tempDate = new Date(this.rDateIn.getTime() + Date.DAY);
			}
			
			
			
	  	while(tempDate <= dateOut_endDate){		
	  		var tempJour = Calendar._DN[tempDate.getDay()];
	  		var tempDatePrinted = tempDate.print(Calendar._TT.DEF_DATE_FORMAT);
	  		var tempOption = document.createElement('option');
	  		tempOption.text = tempJour +' '+tempDatePrinted;
	  		tempOption.value = tempDate.getFullYear()+','+(tempDate.getMonth()+1)+','+tempDate.getDate();
	  		try
		    {
		    	$('roomsDateOut').add(tempOption,null); // standards compliant
		    }
		 		 catch(ex)
		    {
		    	$('roomsDateOut').add(tempOption); // IE only
		    }
		    datesOutIndex[tempDate.getTime()] = i;
	  		tempDate.setTime(tempDate.getTime() + Date.DAY);
	  		i += 1;
	  	}
	  	if($('meetingRoomDaysNb').value != 1 && this.rDateIn.getTime() != this.mDateOut.getTime()){
	  		$('roomsDateOut').options[datesOutIndex[this.mDateOut.getTime()]].selected = true;
	  	}
			this.updateStayLentghInNights();
	  },
	  
	  // Affiche le nombre de nuits dans "Soit X nuits"
	  updateStayLentghInNights : function(){
	  	var tmp = $('roomsDateIn').value.split(',');
	  	var sDateIn = new Date(tmp[0], tmp[1]-1, tmp[2]);
	  	sDateIn = sDateIn.setDateMidday();
			tmp = $('roomsDateOut').value.split(',');
	  	var sDateOut = new Date(tmp[0], tmp[1]-1, tmp[2]);
	  	sDateOut = sDateOut.setDateMidday();
		if($('cobrand')){ // pages cobrand
			Meetings.rCobDateOut = sDateOut;
		}
	  	var stayInNights = Math.round((sDateOut.getTime() - sDateIn.getTime())/Date.DAY);
			$('nb_nuit_printed').innerHTML = stayInNights;
			$('nb_nuitMR').value = stayInNights;
			this.updateHiddenFields(sDateIn);
	  },
	  
	  updateHiddenFields : function(dateIn){
	  	if($('jour_arriveeMR') && $('mois_arriveeMR') && $('annee_arriveeMR')){
	  		$('jour_arriveeMR').value = dateIn.getDate();
	  		$('mois_arriveeMR').value = dateIn.getMonth()+1;
	  		$('annee_arriveeMR').value = dateIn.getFullYear();
	  	}
	  },
	  
	  // Supprime les options d'un select
	  clearSelectOptions : function(select){
	  	for (i=$(select).length-1;i>=0;i--)
	    {
	    	$(select).remove($(select).options[i]);
	    }
	  },
	  
	  attachSubmitLinkAction : function(){
	  	if($('submitLink')){
	  		Event.observe(
	  			$('submitLink'),
	  			'click',
	  			function(e){
	  				Event.stop(e);
	  				Cleaner.cleanDefaultValue($('hotel_ou_ville_label'));
	  				Meetings.checkForm();
	  			}
	  		);
	  	}
	  },
	  
	  // Verifie uniquement si le nombre de chambres <= nb pax, le reste des controles est fait avec le validator
	  checkForm : function(){				
			if($('pax') && $('bedroomNumber')){
				if($('pax').value != "" && $('bedroomNumber') != ""){
					if(Number($('pax').value) < Number($('bedroomNumber').value) ){
						$('bedroomNumber').value = $('pax').value;
						document.forms['meetingsSearchEngine'].submit();
					}
					else{
						document.forms['meetingsSearchEngine'].submit();
					}
				}
				else{
					document.forms['meetingsSearchEngine'].submit();
				}
			}
	  },
	  
	  // Affiche / Masque les selects pour l'affichage du tooltip
	  showHideSelects : function(action){
	  		var selects = $('advanced-bookings').select('select');
	  		if(selects){
	  			selects.each(function(select){
	  					if(action == 'hide'){
					  		select.setStyle({'visibility':'hidden'});
				  		}
				  		else if(action == 'show'){
					  		select.setStyle({'visibility':'visible'});
				  		}
	  			});
	  	}
	  	
	  },
	  
	  // Initialise l'observer sur les tooltip pour masquer les select
	  // (sous IE seulement)
	  initializeTooltipWatcher : function(){
	  	var tooltips = $('main').select('a.tooltip');
	  	tooltips.each(function(element){
	  		if($(element)){
	  			Event.observe(
	  				element,
	  				'mouseover',
	  				function(){
	  					Meetings.showHideSelects('hide');
	  				}
	  			);
	  			
	  			Event.observe(
	  				element,
	  				'mouseout',
	  				function(){
	  					Meetings.showHideSelects('show');
	  				}
	  			);
	  		}
	  	});
	  },
	  
	  //Fonctions de validation du formulaire, desactivees au profit du validator
	  validateForm : function(){
	  	if(this.validateDestination()){
	  		if(this.validatePax()){
	  			if(this.validateSelection()){
	  				if($('bedroom')){
			  			if($('bedroom').checked){
			  				if(this.validateNbRooms()){
			  					document.forms["meetingsSearchEngine"].submit();
			  				}
				  		}
				  		else{
				  				document.forms["meetingsSearchEngine"].submit();
				  		}
				  	}
	  			}
	  		}
	  	}
	  }, 
	  
	  validateDestination : function(){
	  	if($('hotel_ou_ville_label')){
	  		if($('hotel_ou_ville_label').value != ''){
	  			var destinationValue = $('hotel_ou_ville_label').value.toLowerCase();
	  			if(destinationValue == $('hotel_ou_ville_label').defaultValue.toLowerCase()){
		  			this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'destination'), 350, 80, "news-travelagent");
		  			return false;
		  		}
		  		else{
		  			return true;
		  		}
	  		}
	  		else{
	  			this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'destination'), 350, 80, "news-travelagent");
	  			return false;
	  		}
	  	}
	  },
	  
	  validatePax : function(){
	  	if($('pax')){
	  		if($('pax').value != ''){
	  			var paxValue = $('pax').value;
		  		if(isNaN(paxValue) || paxValue < 7){
		  			this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'nbPaxKo'), 350, 80, "news-travelagent");
		  			return false;
		  		}
		  		else{
		  			return true;
		  		}
	  		}
	  		else{
	  			this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'nbPaxKo'), 350, 80, "news-travelagent");
	  			return false;
	  		}
	  	}
	  },
	  
	  validateNbRooms : function(){
	  	if($('bedroomNumber')){
				if($('bedroomNumber').value != ""){
  				var nbRoomValue = $('bedroomNumber').value;
  				var paxValue = $('pax').value;
  				if(isNaN(nbRoomValue)){
  					this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'nbRoomKo'), 350, 100, "news-travelagent");
  					return false;
  				}
  				else if(Number(paxValue) < 31 && Number(nbRoomValue) > 20){
  					this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'tooManyRooms'), 350, 80, "news-travelagent");
  					return false;
  				}
  				else{
  					return true;
  				}
  				/*else if(Number(nbRoomValue) > Number(paxValue)){
  					this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'tooManyRoomsPax'), 350, 90, "news-travelagent");
  				}*/
  			}
  			else{
  				this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'nbRoomKo'), 350, 100, "news-travelagent");
  				return false;
  			}
			}
	  },
	  
	  validateSelection : function(){
	  	if($('bedroom') && $('meetingRoom')){
  			if(!$('bedroom').checked && !$('meetingRoom').checked){
	  			this.showError('errorMessage_meetingsSearchEngine', I18N._('bol.errors', 'noMeetingAndNoRoom'), 350, 80, "news-travelagent");
	  			return false;
	  		}
	  		else{
	  			return true;
	  		}
  		}
	  },
	  
	  showError : function(divError, errorMsg, width, height, classContainer){
	  	$(divError).hide();
			$(divError).innerHTML = '';
			$(divError).innerHTML = errorMsg;
			$(divError).innerHTML += "<a href='#' class='smmButton submitLink'><span>"+ I18N._('popup', 'Close') +"</span></a>";
			if(navigator.userAgent.search(/MSIE 6/) != -1 && navigator.userAgent.search(/opera/) == -1){
				this.showHideSelects('hide');
			}
			DivPopup.openPopup('error', width, height, $(divError), null);
			var newPopup = $$('body.'+classContainer)[0].firstChild;
			var newCloseButton = newPopup.select('a.submitLink')[0];
			if(newCloseButton){
				Event.observe(
					newCloseButton,
					'click',
					function(event){
						Windows.close(newPopup.id, event);
						if(navigator.userAgent.search(/MSIE 6/) != -1 && navigator.userAgent.search(/opera/) == -1){
							Meetings.showHideSelects('show');
						}
					}
				);
			}
	  }
	  //Fin des fonctions de validation.
}

core.push(Meetings);

/**
 * Mettez ci-dessous les méthodes utilisées par la page, utilisant le JSON.
 * Toute méthode n'ayant pas de rapport avec le JSON ne sera pas acceptée.
 */
 
 //Recupere un parametre de l URL
function getUrlParameter( name ){  
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
		var regexS = "[\\?&#]"+name+"=([^&#]*)";  
		var regex = new RegExp( regexS );  
		var results = regex.exec( window.location.href );  
		if( results == null )    
			return "";  
		else
			return results[1];
}
