var recherche_googleBox = {
	bookingEngineViewBean : null,
	originViewBean : null,
	
	getBeans: function() {
      return "BookingEngineViewBean;OriginViewBean";
  },
  
  initJSON: function() {
    this.bookingEngineViewBean = viewBeans["BookingEngineViewBean"];
    this.originViewBean = viewBeans["OriginViewBean"];
  },
  
  rewrite: function() {
  	this.setGoogleBoxUrl();
  	this.writeInfos();
  	this.initNewSearch();
  },
  
  setGoogleBoxUrl : function(){
  	if(d_contextGeo != "leasureGroup"){
	  	if($('iframe-googlebox') && this.bookingEngineViewBean.destination && this.bookingEngineViewBean.destination != ""){
	  		var contentLang= this.getDirLangFromMeta();
				var langue=contentLang;
				if(contentLang=="en") langue="gb";
	  		var urlIframe="/search"+
				"?output=xml_no_dtd"+
				"&oe=UTF-8&ie=UTF-8"+                                       			// UTF-8
				"&client="+ googleBoxParams['client']+                        		// frontal de restriction des documents
				"&proxystylesheet="+ googleBoxParams['proxystylesheet']+      		// frontal graphique
				"&site="+ googleBoxParams['site']+                            		// collection
				"&requiredfields=Content-language:"+contentLang+                  // document ayant le meta Content-language precise
				"&langue="+langue+                                                // langue pour le template xslt	
				"&proxyreload=0"+
				"&filter=0"+
				"&page=alternatif"+
				"&q="+this.bookingEngineViewBean.destination;
				$('iframe-googlebox').src = urlIframe;
	  	}
  	}
  	else{
  		if($('googlebox')) $('googlebox').style.display = "none";
  	}
  },
  
  writeInfos : function(){
  	if($('destination') && this.bookingEngineViewBean.destination && this.bookingEngineViewBean.destination != "") 
  		$('destination').innerHTML = this.bookingEngineViewBean.destination;
  },
  
  initNewSearch : function(){
  	if($('newSearch_global')){
  		if(d_contextGeo == "rfp" || d_contextGeo == "leasureGroup"
      			|| d_contextGeo == "advantagePlus" || d_contextGeo == "accorAdvantagePlus")
      	{
      		this.buildContextNewSearchView(this.bookingEngineViewBean);
      	}
      	else if(d_contextGeo == "thalassa"){
      		this.buildThalassaNewSearchView(this.bookingEngineViewBean);
      	}
      	else{
      		this.buildDefaultNewSearchView(this.bookingEngineViewBean);
      	}
  	}
  },
  
  buildDefaultNewSearchView : function(bookingEngineViewBean){
			if(bookingEngineViewBean && $('newSearch_global')){
							
				if($('jour_arrivee')){
					var index = 0;
					var selectIndex = -1;
				
					$('jour_arrivee')[index++]=new Option("-", "");
				
					for(var i=1; i< 31+1; i ++){
						$('jour_arrivee').options[index] = new Option(i,i);
						index++;
					}
				}
				
				if($('mois_arrivee')){
					var index = 0;
					var selectIndex = -1;
				
					$('mois_arrivee')[index++]=new Option("-", "");
				
					for(var i=1; i< 12+1; i ++){
						$('mois_arrivee').options[index] = new Option(i,i);
						index++;
					}
				}
				
				var today = new Date();
				var maxDate = new Date(today.getTime() + bookingEngineViewBean.maxPeriod * 24 * 60 * 60 * 1000);
				
				if($('annee_arrivee')){
					var index = 0;
					var selectIndex = -1;
				
					$('annee_arrivee')[index++]=new Option("-", "");
				
					for(var i=today.getFullYear(); i< maxDate.getFullYear()+1; i ++){
						$('annee_arrivee').options[index] = new Option(i,i);
						index++;
					}
				}
				
				if($('nb_nuit')){
					var index = 0;
					var selectIndex = -1;
				
					$('nb_nuit')[index++]=new Option("-", "");
				
					for(var i=1; i< bookingEngineViewBean.maxStay+1; i ++){
						$('nb_nuit').options[index] = new Option(i,i);
						index++;
					}
				}
				
				this.updateNewSearchBookingEngine(bookingEngineViewBean);
				
				$('newSearch_global').show();
			}
		},
		
		updateNewSearchBookingEngine : function(bookingEngineViewBean){
			if(bookingEngineViewBean){
				if(document.getElementById('nom_ville') && bookingEngineViewBean.destination)
					document.getElementById('nom_ville').value = bookingEngineViewBean.destination;

				if(document.getElementById('jour_arrivee') && (document.getElementById('jour_arrivee').tagName).toUpperCase()=='SELECT'
					&& document.getElementById('mois_arrivee') && (document.getElementById('mois_arrivee').tagName).toUpperCase()=='SELECT'
					&& document.getElementById('annee_arrivee')  && (document.getElementById('annee_arrivee').tagName).toUpperCase()=='SELECT'
					&& bookingEngineViewBean.dayIn && bookingEngineViewBean.monthIn && bookingEngineViewBean.yearIn){
					document.getElementById('jour_arrivee').selectedIndex = bookingEngineViewBean.dayIn;
					document.getElementById('mois_arrivee').selectedIndex = bookingEngineViewBean.monthIn;
					for(i=0; i<document.getElementById('annee_arrivee').options.length; i++){
						if(document.getElementById('annee_arrivee').options[i].value == bookingEngineViewBean.yearIn){
							document.getElementById('annee_arrivee').selectedIndex = i;
						}
					}
				}
				
				if(document.getElementById('nb_nuit') && (document.getElementById('nb_nuit').tagName).toUpperCase()=='SELECT' && bookingEngineViewBean.nightsNumber && bookingEngineViewBean.nightsNumber != 0){
					document.getElementById('nb_nuit').selectedIndex = bookingEngineViewBean.nightsNumber;
				}
			}
		},
		
		buildContextNewSearchView : function(bookingEngineViewBean){
			if(bookingEngineViewBean){
				var linkSearch = $('newSearch_context').select('a')[0];
				if(linkSearch) linkSearch.href=bookingEngineViewBean.newSearchUrl;
				
				if(d_contextGeo == "rfp"){
					if(linkSearch)linkSearch.addClassName('btgdrouge_promice');
				}
				else{
					if(linkSearch) linkSearch.addClassName('btgdvert_promice');
				}
				$('newSearch_context').show();
			}
		},
		
		buildThalassaNewSearchView : function(bookingEngineViewBean){
			if(bookingEngineViewBean){
				var linkSearch = $('newSearch_thalassa').select('a')[0];
				if(linkSearch) linkSearch.href=bookingEngineViewBean.newSearchUrl;
				
				$('newSearch_thalassa').show();
			}
		},
		
		getDirLangFromMeta : function() {
		 var htmlTag = document.getElementsByTagName("html")[0];
		 if(htmlTag.attributes["xml:lang"] && htmlTag.attributes["xml:lang"].value)
		  return htmlTag.attributes["xml:lang"].value;
		 else if(htmlTag.attributes["lang"] && htmlTag.attributes["lang"].value)
		  return htmlTag.attributes["lang"].value;
		 else
		  return "gb";
		}
}

core.push(recherche_googleBox);
