/**
 * Objet javascript permettant de gérer la récupérartion et
 * l'affichage du BAR (best average rate) pour la resa express (suitenovotel)
 * 
 */
var Bar= {

     barViewBean: null,							// infos de bar
     actionErrorViewBean : null,		// message d'erreur
     currenciesViewBean : null,		  // devises
     antiBounce	: false,						// bloque recherche de bar qd déjà lancée
    
    /**
     * Liste des noms d'objets à utiliser.
     */
    getBeans: function() {
        return "BarViewBean;ActionErrorViewBean;CurrenciesViewBean";
    },


    getBarViewBean: function()
    {
        return barViewBean;
    }, 
    
    getActionErrorViewBean: function()
    {
        return actionErrorViewBean;
    },  
      
    getCurrenciesViewBean: function()
    {
        return currenciesViewBean;
    },  
    
    /**
     * Initialisation de la variable JSON
     */
    initJSON: function() {
        var num;
    	try {
           	for( num in beans){
           	  
                if("BarViewBean" == beans[num].nom) {
                    barViewBean = beans[num].bean;                    
                }
                else if("CurrenciesViewBean" == beans[num].nom) {
                    currenciesViewBean = beans[num].bean;
                }                
                else if("ActionErrorViewBean" == beans[num].nom) {
                    actionErrorViewBean = beans[num].bean;
                }             	          	            	
            }
        } catch(e) {
    	    alert(e);
    	}
    },
        

    /**
     *  appel du service de récupération du BAR
     *	si le blocage n'est pas actif
     */
    doBarAction: function(){	    		
  			if(this.antiBounce == false){	
	  			this.antiBounce = true;	 // blocage activé
	  			this.rewrite();
	  			
	        var url = buildParamsUrl_usingNames();
	        updateView("bar", "", url+"&"+beanToLoad);	        
		      this.initJSON();
	
		    	if(this.getActionErrorViewBean())
		    	    this.rewriteActionErrorMessage();
		    	else{
		    	    this.rewriteBarViewBean();
           }   		
	    }	    
    },

    /**
     *  Affichage du BAR récupéré sur la page 
     *
     */
    rewrite: function() {
    	// listeners, permettent une nouvelle recherche de bar et effacent le bar precedent
    	Event.observe(window,'load',	function(e) {  this.antiBounce = false;	this.rewriteDefault(); }.bind(this)	);
    	if(document.forms['SUI_BOOKING_ENGINE_EXPRESS']){
      	Event.observe(document.forms['SUI_BOOKING_ENGINE_EXPRESS'].hotel_ou_ville,'change',	function(e) {  this.antiBounce = false;	this.rewriteDefault(); }.bind(this)	);
      	Event.observe(document.forms['SUI_BOOKING_ENGINE_EXPRESS'].jour_arrivee  ,'change',	function(e) {  this.antiBounce = false;	this.rewriteDefault(); }.bind(this)	);
      	Event.observe(document.forms['SUI_BOOKING_ENGINE_EXPRESS'].mois_arrivee  ,'change',	function(e) {  this.antiBounce = false;	this.rewriteDefault(); }.bind(this)	);
      	Event.observe(document.forms['SUI_BOOKING_ENGINE_EXPRESS'].annee_arrivee ,'change',	function(e) {  this.antiBounce = false;	this.rewriteDefault(); }.bind(this)	);
      	Event.observe(document.forms['SUI_BOOKING_ENGINE_EXPRESS'].nb_nuit       ,'change',	function(e) {  this.antiBounce = false;	this.rewriteDefault(); }.bind(this)	);
     
    	}
    	if(this.getBarViewBean())
					this.rewriteBarViewBean();
			else
			    this.rewriteDefault();			
    },

		rewriteBarViewBean: function (){
   	    if(barViewBean.price != null){
   	      if($("affich_bar")){
		        $("affich_bar").innerHTML = '<span class="techPrice mtarif">'+barViewBean.price.priceWithTaxes+'</span> <span class="mdevise" style="display: none;">'+barViewBean.price.currencyCode+'</span>';
		        
		        var c = barViewBean.price.currencyCode; // je recupere la devise dans laquelle les prix sont renvoyés
		     		Currencies.doSelectCurrency("s_devise", c); // je fais le select
		         if ($('s_devise')) {
		         	   $("s_devise").style.display = "block"  ;
					    	Currencies.setOriginalCurrency(c);	// j'enregistre la devise de départ des conversions
						    Currencies.setCrtCurrency(c); // j'enregistre la devise courante
						    Currencies.observeSelect( $('s_devise')); // je me mets à l'affut 
							}
    	   
          }  		       						
        }        
    },

		rewriteDefault: function (){
        if($("affich_bar"))       
          $("affich_bar").innerHTML = '';
        if($("s_devise"))       
          $("s_devise").style.display = "none"  ; 
    },

    rewriteActionErrorMessage: function (){
    		$("affich_bar").innerHTML = actionErrorViewBean.errorMessage;
    		$("s_devise").style.display = "none"  ; 
    }
}
core.push(Bar);


   
   function buildParamsUrl(){
   	
		var hotel = $("hotel_ou_ville").value;
		var jour = $("jour_arrivee").value;
		var mois = $("mois_arrivee").value;
		var annee = $("annee_arrivee").value;
		var nuit = $("nb_nuit").value;
		
		if(hotel == '0')
			hotel = '';  
		if(jour == '-')
			jour = '';
	 	if(mois == '-')
			mois = '';
		if(annee == '-')
			annee = '';
		if(nuit == '-')
			nuit = '';
			
		return '&code_hotel='+hotel+"&jour_arrivee="+jour+"&mois_arrivee="+mois+"&annee_arrivee="+annee+"&nb_nuit="+nuit;


   }   
   
      function buildParamsUrl_usingNames(){
	
    var hotel = document.forms['SUI_BOOKING_ENGINE_EXPRESS'].hotel_ou_ville.value;
		var jour = document.forms['SUI_BOOKING_ENGINE_EXPRESS'].jour_arrivee.value;
		var mois = document.forms['SUI_BOOKING_ENGINE_EXPRESS'].mois_arrivee.value;
		var annee = document.forms['SUI_BOOKING_ENGINE_EXPRESS'].annee_arrivee.value;
		var nuit = document.forms['SUI_BOOKING_ENGINE_EXPRESS'].nb_nuit.value;
	
	
		if(hotel == '0')
			hotel = '';  
		if(jour == '-')
			jour = '';
	 	if(mois == '-')
			mois = '';
		if(annee == '-')
			annee = '';
		if(nuit == '-')
			nuit = '';
				
		return '&code_hotel='+hotel+"&jour_arrivee="+jour+"&mois_arrivee="+mois+"&annee_arrivee="+annee+"&nb_nuit="+nuit;


   }

