document.write('<script type="text/javascript" src="/scripts-v66/view/json/jsonrpc_ah.js"></script>');

Event.observe(window, 'load', onLoadEvent, false);

////////// Declaration des variables nom de tous les elements pouvant se trouver sur la page /////////////////
var n_viewName = "homePage";

//// Nom des beans
var n_ProfileViewBean = "ProfileViewBean";
var n_OriginViewBean = "OriginViewBean";
var n_ReserverViewBean = "ReserverViewBean";
var n_BookingEngineViewBean = "BookingEngineViewBean"; 
var n_InterHotelsViewBean = "InterHotelsViewBean"; 
var n_CurrentCacheObjectViewBean = "CurrentCacheObjectViewBean";
//liste des beans a charger
var n_ListBean = n_ProfileViewBean 
                 + ";" + n_OriginViewBean 
                 + ";" + n_ReserverViewBean 
                 + ";" + n_BookingEngineViewBean 
                 + ";" + n_InterHotelsViewBean 


var n_elt_type_carte_fidelite ="type_carte_fidelite";

//// Pour le calendrier BookingEngine
var n_elt_href_calendrier ="calendrier"
var n_elt_jour_arrivee = "jour_arrivee";
var n_elt_mois_arrivee = "mois_arrivee";
var n_elt_annee_arrivee = "annee_arrivee";
var n_elt_checkboxContrat = "checkboxContrat";
var n_elt_checkboxAvantage = "checkboxAvantage";
var n_elt_nb_nuit = "nb_nuit";

//Pour mettre premiere ligne sur selector
var selectorDefaultValue="--";

//////////////////////////////////////// Les fonctions  //////////////////////////////////////////////////////
function onLoadEvent(viewBeans) {
  // On limite les beans a rechercher si certains elts n'existent pas sur la page
  // Selecteur de Carte de fid
  if (document.getElementById(n_elt_type_carte_fidelite))
    n_ListBean = n_ListBean + ";" + n_CurrentCacheObjectViewBean;  
	
	initBeanList(n_ListBean);
	
	if (document.getElementById(n_elt_type_carte_fidelite))
	    //Pour l'optimisation, on ne veut que les cartes de fid pour le select
	    updateView(null, n_viewName, beanToLoad+"&cacheObject=4");
	else
	    updateView(null, n_viewName, beanToLoad);

}

/* fonction obligatoire a tous les rewrite pour reecrire les elts de la page */
function rewriteView(){
	try {
		var num;
		for( num in beans){
			if((n_ProfileViewBean) == beans[num].nom){
				buildProfileView(beans[num].bean);
			} else if((n_OriginViewBean) == beans[num].nom){
				var originBean = beans[num].bean;
			} else if((n_ReserverViewBean) == beans[num].nom){
				var reserverBean = beans[num].bean;
			} else if((n_BookingEngineViewBean) == beans[num].nom){
				/*if (typeof SOF != "undefined") // cas sofitel code nurun de ***** ...
					buildBookingEngineViewSofitel(beans[num].bean);
				else
					buildBookingEngineView(beans[num].bean);*/
			} else if((n_CurrentCacheObjectViewBean) == beans[num].nom){
				buildCurrentCacheObjectView(beans[num].bean);
			} else if((n_InterHotelsViewBean) == beans[num].nom){
				buildInterHotelsView(beans[num].bean);
			}
		}

		buildReserverView(reserverBean, originBean);

	} catch(e) {

		alert(e);
	}
}

/*Pour la construction du profil et mailingList*/
function buildProfileView(bean){
	if(bean){
		getElementByIdIfExists("bloc_not_ident").style.display="none";
		if(bean.firstName!=""){
			getElementByIdIfExists("firstName").innerHTML= bean.firstName;
		}
		getElementByIdIfExists("bloc_ident").style.display="block";
		if(bean.email!=""){
			getElementByIdIfExists("email").value=bean.email;
			getElementByIdIfExists("email").disabled = true;
		}
		// Pour les hotels favoris
		if ( bean.hotels ){	   
       getElementByIdIfExists("hotels").style.display="";
    }else{
       getElementByIdIfExists("hotels").style.display="none";    
    }
	}
	else {
	  
		getElementByIdIfExists("bloc_ident").style.display="none";
		getElementByIdIfExists("bloc_not_ident").style.display="block";
		getElementByIdIfExists("firstName").innerHTML= "";
		getElementByIdIfExists("email").disabled = false;
	}

}

/* Pour le mini moteur de la home*/
function buildBookingEngineView(bean){
	if(bean){
		rewriteDates(bean.maxStay, bean.maxPeriod, selectorDefaultValue);
		initEventHandlers(bean.maxStay, bean.maxPeriod);
		//date in
		if(bean.dayIn)
			getElementByIdIfExists(n_elt_jour_arrivee).value=Number(bean.dayIn);
		if(bean.monthIn)
			getElementByIdIfExists(n_elt_mois_arrivee).value=Number(bean.monthIn);
		if(bean.yearIn)
			getElementByIdIfExists(n_elt_annee_arrivee).value=bean.yearIn;
		if(bean.nightsNumber)
			getElementByIdIfExists(n_elt_nb_nuit).value=bean.nightsNumber;

		// code preferentiel: que si input code_avantage existe
		if(bean.preferentialCode)
			getElementByIdIfExists("code_avantage").value= bean.preferentialCode;

		//Societe
		getElementByIdIfExists(n_elt_checkboxContrat).value = "0";

		//Carte Avantage
		getElementByIdIfExists(n_elt_checkboxAvantage).value = "0";

		// destination
		if (bean.destination){
			getElementByIdIfExists("hotel_ou_ville").value=bean.destination;
		}else {
			getElementByIdIfExists("hotel_ou_ville").value="";
		}
	}
}

function buildBookingEngineViewSofitel(bean){
	if (bean){
		//date in
		if (bean.dayIn && bean.monthIn && bean.yearIn){
			// update datein
			var dateIn = {"d": Number(bean.dayIn), "m": Number(bean.monthIn), "y": Number(bean.yearIn)};
			SOF.dates.update(dateIn, "start");
		}
		if (bean.nightsNumber){
			SOF.dates.updateNights(bean.nightsNumber);
		}
		// code preferentiel: que si input code_avantage existe
		if(bean.preferentialCode != null){
			getElementByIdIfExists("code_avantage").value= bean.preferentialCode;
		}
		//Carte Avantage
		getElementByIdIfExists(n_elt_checkboxAvantage).value = "0";

			// destination
			if (bean.destination){
			    getElementByIdIfExists("hotel_ou_ville").value=bean.destination;
      }
   }
}

/* Pour placer InterHotels sur la home*/
function buildInterHotelsView(bean){
	// Cas de la home accor: Pour interhotels
	if(bean){
	   getElementByIdIfExists("bloc_interhotel").style.display="block";
	   if (bean.selectedhotelName){
	        getElementByIdIfExists("bloc_hotelReservataire").style.display="block";
	        getElementByIdIfExists("bloc_liste_hotel").style.display="none";
	        getElementByIdIfExists("nomhotelreservataire").style.display="inline";
	        getElementByIdIfExists("nomhotelreservataire").innerHTML  = bean.selectedhotelName;
	        getElementByIdIfExists("code_tars").value  = bean.selectedhotelCode;
	   }
	   if (bean.listeHotel){
	        getElementByIdIfExists("bloc_liste_hotel").style.display="block";
	        getElementByIdIfExists("bloc_hotelReservataire").style.display="none";
	        fillSelect("interhotels_list",bean.listeHotel,"","");
	        Event.observe("interhotels_list", "change", function(event){ selected_Interhotels("interhotels_list",code_tars);});
	   }
	}
	else{
		getElementByIdIfExists("bloc_interhotel").style.display="none";
	}
}

/* Pour placer les cartes de fid sur la home: depend de bloc_fid_card*/
function buildCurrentCacheObjectView(bean){
	getElementByIdIfExists("bloc_fid_card").style.display="block";
	//pour les infos de carte de fid
	if(bean != null){
		fillSelect("type_carte_fidelite",bean.fidelityCards,"","");
	}
}

/*Pour le renvoie sur les pages de espace pro*/
function buildReserverView(reserverBean, originBean){
	if (reserverBean){
	    var d_url_agv = reserverBean.url_agv;
	    var d_url_travelprofessional = reserverBean.url_travelprofessional;
	    if(originBean){
	        d_userLang  = originBean.codeLang;
	        d_url_agv = "/" + d_userLang +  d_url_agv;
	        d_url_travelprofessional = "/" + d_userLang +  d_url_travelprofessional;
	        if ( d_userLang = "en" ){
		          d_url_agv = d_url_agv.replace("/"+d_userLang+"/","/gb/");
		          d_url_travelprofessional = d_url_travelprofessional.replace("/"+d_userLang+"/","/gb/");
	        }
			    getElementByIdIfExists("hrefEspaceProAgents").href = d_url_agv;
	       	getElementByIdIfExists("hrefEspaceProProfvoyages").href= d_url_travelprofessional;
	    }
	}
}

function initEventHandlers(maxStay, maxPeriod){
	Event.observe(n_elt_jour_arrivee, "change", function(event){ checkStayDates("j", n_elt_jour_arrivee, maxStay, maxPeriod);});
	Event.observe(n_elt_mois_arrivee, "change", function(event){ checkStayDates("m", n_elt_mois_arrivee, maxStay, maxPeriod);});
	Event.observe(n_elt_annee_arrivee, "change", function(event){ checkStayDates("a", n_elt_annee_arrivee, maxStay, maxPeriod);});
	Event.observe(n_elt_nb_nuit, "change", function(event){ checkStayDates("n",n_elt_nb_nuit, maxStay, maxPeriod);});
	Event.observe(n_elt_checkboxContrat, "change", function(event){ checkBoxChange(n_elt_checkboxContrat);});
	Event.observe(n_elt_checkboxAvantage, "change", function(event){ checkBoxChange(n_elt_checkboxAvantage);});
	Event.observe(n_elt_href_calendrier, "click", function(event){ calendrier_arrivee("bookingEngine", n_elt_mois_arrivee, n_elt_annee_arrivee,maxPeriod);});

}

function checkBoxChange(checkboxId){
	if (getElementByIdIfExists(checkboxId).value == "0"){
		getElementByIdIfExists(checkboxId).value = "1";
	}else{
		getElementByIdIfExists(checkboxId).value = "0";
	}
}

function checkStayDates(type, id, maxStay, maxPeriod){
	
	if ( $(id).selectedIndex == 0 && $(n_elt_mois_arrivee)[0].text == $(n_elt_annee_arrivee)[0].text){
	    //Tout passe a selectorDefaultValue
	    $(n_elt_jour_arrivee)[0].selected = true;
	    $(n_elt_mois_arrivee)[0].selected = true;
	    $(n_elt_annee_arrivee)[0].selected = true;
	    $(n_elt_nb_nuit)[0].selected = true;
	}else{
	    //On a une vrai date
	    if (id == n_elt_nb_nuit && $(n_elt_jour_arrivee)[0].selected){
	        //On selectionne en premier le nombre de nuits 
	        var i = $(id).selectedIndex;
	        initDate();
	        $(n_elt_nb_nuit)[i].selected = true;
	    }else{
	        //On selectionne dans jour/mois/annee
          var today = new Date();
          if ($(n_elt_jour_arrivee)[0].selected){
              setSelectedValue(n_elt_jour_arrivee, today.getDate());
          } 
          if ($(n_elt_mois_arrivee)[0].selected){
               setSelectedValue(n_elt_mois_arrivee, today.getMonth()+1);
          }
          if ($(n_elt_annee_arrivee)[0].selected){
               setSelectedValue(n_elt_annee_arrivee, today.getFullYear());
          }
          
          if($(n_elt_nb_nuit).selectedIndex == 0)
            checkDates(type, 1, maxPeriod);
          else
            checkDates(type, $(n_elt_nb_nuit).value, maxPeriod);

	    }
	    if ($(n_elt_nb_nuit).selectedIndex == 0){
	        setSelectedValue(n_elt_nb_nuit, 1);
	    }
	}
}

function rewriteDates(maxStay, maxPeriod, sdefaultValue){
  var _today = new Date();
  var _maxDate = addDays(_today ,maxPeriod);
	if(sdefaultValue != ""){
		fillDates(n_elt_jour_arrivee, 1, 31, sdefaultValue);
		fillDates(n_elt_mois_arrivee, 1, 12, sdefaultValue);	
		fillDates(n_elt_annee_arrivee, _today.getFullYear(), _maxDate.getFullYear(), sdefaultValue);
		fillDates(n_elt_nb_nuit, 1, maxStay, sdefaultValue);
	}else{
		fillDates(n_elt_jour_arrivee, 1, 31);
		fillDates(n_elt_mois_arrivee, 1, 12);
		fillDates(n_elt_annee_arrivee, _today.getFullYear(), _maxDate.getFullYear());
		fillDates(n_elt_nb_nuit, 1, maxStay);
	}
}

function fillDates(elementId, min, max, defaultValue){
	var selectElement	= $(elementId);
	selectElement.options.length=0;
	if(min==0 && max==0){
		selectElement[0]=new Option(defaultValue, "");
	} else {
		if(defaultValue){
			selectElement[0]=new Option(defaultValue, "");
			for(var i=0; i<max-min+1; i++)
				selectElement[i+1]=new Option(min+i, min+i);
			}
		else {
			for(var i=0; i<max-min+1; i++)
				selectElement[i]=new Option(min+i, min+i);
			}
	}
}

function selected_Interhotels(listId, hotelCodeTarsId){
	if ($(listId).selectedIndex != 0){
		$(hotelCodeTarsId).value  = $(listId).value;
		document.location.href = "/interHotel.svlt?code_tars="+$(listId).value;
	}
}

