/**
 * Fonctions javascript / ajax du calendrier
 * @author Mathieu MARFISI
 */
  
	/**
	 * Fonction pour creation de l'objet XMLRequest AJAX
	 */
	function calendrierDateInputCreateXHR() {
	    
	    var xhr;
	    
	    try {
	    	xhr = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (err) {
	    	try {
	    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	    	} catch(err) {
	    		xhr = false;
	    	}
	    }
	    
	    if(!xhr && typeof XMLHttpRequest != 'undefined') {
	    	xhr = new XMLHttpRequest();
	    }
	    
	    return xhr;
	}
 
  /**
   * Affiche ou ferme le calendrier suivant l'état initial
   * @param champs Le nom du champs date input
   * @param langue La langue du calendrier (ex : FR, UK ect..)
   */
	function calendrierDateInputShow(champs,langue,champDateFin,nb_jour_mini,nb_jour_maxi,id_champ_duree) {
					
			var calendrier = document.getElementById(champs + '_CAL');
			var AUTORISE_DATE_PASSE = document.getElementById(champs + '_AUTORISE_DATE_PASSE');
			var FORMAT_DATE = document.getElementById(champs + '_FORMAT_DATE');
			
			var dateEnCours = document.getElementById(champs + '_ID');			            
			
			// Options
			var WEEKEND_UNIQUEMENT = document.getElementById(champs + '_WEEKEND_UNIQUEMENT');
			var WEEKEND_START = document.getElementById(champs + '_WEEKEND_START');
			var MODE_AFFICHAGE = document.getElementById(champs + '_MODE_AFFICHAGE');
			var JS_ONCLICK_JOUR = document.getElementById(champs + '_JS_ONCLICK_JOUR');			
			var INTERVAL_QUART_HEURE = document.getElementById(champs + '_INTERVAL_QUART_HEURE');			
			var SEMAINE_UNIQUEMENT = document.getElementById(champs + '_SEMAINE_UNIQUEMENT');
			var SEMAINE_FIN = document.getElementById(champs + '_SEMAINE_FIN');
			var DATE_LIMITE_RESA = document.getElementById(champs + '_DATE_LIMITE_RESA');
			var DATE_MAX_RESA = document.getElementById(champs + '_DATE_MAX_RESA');
			var JOUR_UNIQUEMENT = document.getElementById(champs + '_JOUR_UNIQUEMENT');
			var LISTE_DATES = document.getElementById(champs + '_LISTE_DATES');			
			var CHAMPS_CACHE = document.getElementById(champs + '_CHAMPS_CACHE');
			var PLANNING_RECHERCHE = document.getElementById(champs + '_PLANNING_RECHERCHE');
			var CRITERES_RECHERCHE = document.getElementById(champs + '_CRITERES_RECHERCHE');
			var PROMO_RECHERCHE = document.getElementById(champs + '_PROMO_RECHERCHE');						            
            var HAUT_INCLUDE_SPECIAL = document.getElementById(champs + '_HAUT_INCLUDE_SPECIAL');
            var DUREE_QUART_MIN_LIBRE = document.getElementById(champs + '_DUREE_QUART_MIN_LIBRE');            
             
			var attente_html = '';
                  attente_html = attente_html + '<table cellspacing="0" cellpadding="3" style="width:155px;height:165px;">';
                  attente_html = attente_html + '<tr><td align="center" valign="center">';
                  attente_html = attente_html + '<img src="plugin/calendrierdispo/img/ajax-loader.gif" border="0">';
                  switch (langue)
          {
            case 'FR':
                attente_html = attente_html + '<br><br><span style="color:#000"><b>Recherche des dates disponibles ... </b></span>';
                break;
            default:
            case 'UK':
                attente_html = attente_html + '<br><br><span style="color:#000"><b>Search for available dates ... </b></span>';
                break;
          }
          attente_html = attente_html + '</td></tr>';
          attente_html = attente_html + '</table>';
          calendrier.className = "calendrierDateInput";
          calendrier.innerHTML = attente_html;
														
			if(calendrier.style.visibility ==  'visible') {
				tabCampsCache = CHAMPS_CACHE.value.split("[");
				for(iTab=0; iTab<tabCampsCache.length; iTab++)			
				{cacheChamps('ON', tabCampsCache[iTab]);}				
				
				calendrier.style.visibility =  'hidden';
			} else {
								
				tabCampsCache = CHAMPS_CACHE.value.split("[");
				for(iTab=0; iTab<tabCampsCache.length; iTab++)			
				{cacheChamps('OFF', tabCampsCache[iTab]);}				
				
				// Requete AJAX
				var xhr = calendrierDateInputCreateXHR();
				xhr.onreadystatechange = function() {
						if(xhr.readyState == 4){    
		        
			        var response = xhr.responseText;
			        var html = new String();
			      
			        // Récupération du code HTML
			        html = response;
					    calendrier.className = "calendrierDateInput";
			        calendrier.innerHTML = html;
		    		}
				};
	 			xhr.open('GET', 'plugin/calendrierdispo/calendrier.ajax.php?champs=' + champs + '&langue=' + langue + '&autorise_date_passe=' 
	 					+ AUTORISE_DATE_PASSE.value
	 					+ '&date_en_cours=' + dateEnCours.value
	 					+ '&weekend_uniquement=' + WEEKEND_UNIQUEMENT.value
						+ '&weekend_start=' + WEEKEND_START.value
						+ '&mode_affichage=' + MODE_AFFICHAGE.value
						+ '&js_onclick_jour=' + JS_ONCLICK_JOUR.value						
						+ '&interval_quart_heure=' + INTERVAL_QUART_HEURE.value						
						+ '&semaine_uniquement=' + SEMAINE_UNIQUEMENT.value
						+ '&semaine_fin=' + SEMAINE_FIN.value
						+ '&date_limite_resa=' + DATE_LIMITE_RESA.value
						+ '&date_max_resa=' + DATE_MAX_RESA.value
						+ '&jour_uniquement=' + JOUR_UNIQUEMENT.value
						+ '&liste_dates=' + LISTE_DATES.value
						+ '&planning_recherche=' + PLANNING_RECHERCHE.value
						+ '&criteres_recherche=' +  CRITERES_RECHERCHE.value
						+ '&promo_recherche=' + PROMO_RECHERCHE.value
						+ '&haut_include_special=' + HAUT_INCLUDE_SPECIAL.value
						+ '&duree_quart_min_libre=' + DUREE_QUART_MIN_LIBRE.value						
	 					+ '&format_date=' + FORMAT_DATE.value
	 					+ '&champDateFin=' + champDateFin
	 					+ '&nb_jour_mini=' + nb_jour_mini 
	 					+ '&nb_jour_maxi=' + nb_jour_maxi
	 					+ '&id_champ_duree=' + id_champ_duree);
	 					
			  xhr.send(null);
				calendrier.style.visibility =  'visible';
			}				
	}
	
	/**
	 * Permet de cacher ou faire apparaitre les champs qui seront sous le calendrier (problème sur les IE6 et inférieurs), 	 
	 * @mode Mode de gestion : afficher/cacher
	 * @champs Nom du champs à traiter
	 */
	function cacheChamps(mode, nomChamps){            	
      if(nomChamps != ""){
	      if(mode=='OFF'){
	      	modeVisibilite = "hidden";
	      }
    	  else{
    	  	modeVisibilite = "visible";
    	  }
      	  document.getElementById(nomChamps).style.visibility = modeVisibilite;              	                            
      }
	}
	
	/**
	 * Action l'on selectionne une date dans le calendrier, 
	 * remplit le champs input et ferme le calendrier
	 * @param champs Le nom du champs date input
	 * @param dateSelectionne La date que l'on a selectionnée
	 */
	function calendrierDateInputSelectDate(champs,dateSelectionne,champDateFin) {
			
            var calendrier = document.getElementById(champs + '_CAL');
			var dateInput = document.getElementById(champs + '_ID');
			var dateInput = document.getElementById(champs + '_ID');
			dateInput.value = dateSelectionne;
			var CHAMPS_CACHE = document.getElementById(champs + '_CHAMPS_CACHE');
			var MODE_AFFICHAGE = document.getElementById(champs + '_MODE_AFFICHAGE');								
			var CHAMPS_SELECT_PRECEDENT = document.getElementById(champs + '_CHAMPS_SELECT_PRECEDENT');			
			           
			tabCampsCache = CHAMPS_CACHE.value.split("[");
			for(iTab=0; iTab<tabCampsCache.length; iTab++)			
			{cacheChamps('ON', tabCampsCache[iTab]);}			
			
			if(champDateFin != ""){
				
				if(document.getElementById(champDateFin + '_ID')){
					var dateInputFin = document.getElementById(champDateFin + '_ID');
					dateInputFin.value = dateSelectionne;
				}
			}
			
			var lance_ajax = 1;
            var lance_ajax_loisir = 1;
            var lance_ajax_visites = 1;
            if(document.getElementById('traite_un_seul_init_nb_res') != undefined && document.getElementById('traite_un_seul_init_nb_res').value == 'OUI'){
			     //datedebactivite_loisir
			     if (champs.indexOf('_') >= 0){
                    var fin_du_champs = champs.substring(champs.indexOf('_'));
                    if (fin_du_champs == '_loisir'){
                        lance_ajax = 0;
                        lance_ajax_visites = 0;
                    } else {
                        if (fin_du_champs == '_visites'){
                            lance_ajax = 0;
                            lance_ajax_loisir = 0;
                        } 
                    } 
                 } else {
                     lance_ajax_visites = 0;
                     lance_ajax_loisir = 0;
                 }
            }
			
			
			 if(lance_ajax && document.getElementById('nb_resultats_ajax') != undefined){
			  init_nb_resultats_ajax('recherche');
             }
             if(document.getElementById('nb_resultats_ajax_ot') != undefined){
			  init_nb_resultats_ajax('recherche');
             }
             if(document.getElementById('nb_resultats_ajax_hotel') != undefined){
			  init_nb_resultats_ajax_hotel('recherche');
             }
             if(document.getElementById('nb_resultats_ajax_visite') != undefined){
			  init_nb_resultats_ajax_visite('recherche');
             }
             if(document.getElementById('nb_resultats_ajax_prestation') != undefined){
			  init_nb_resultats_ajax_prestation('recherche');
             }            
			 
             if(document.getElementById('nb_resultats_ajax_frmMoteur') != undefined){
			  init_nb_resultats_ajax('recherche','frmMoteur');
             }
             
             if(document.getElementById('nb_resultats_ajax_frmMiniMoteur') != undefined){
			  init_nb_resultats_ajax('recherche','frmMiniMoteur');
             }
             
             if(document.getElementById('nb_resultats_ajax_frmMoteurDroite') != undefined){
			  init_nb_resultats_ajax('recherche','frmMoteurDroite');
             }
             
             if(lance_ajax_loisir && document.getElementById('nb_resultats_ajax_loisir') != undefined){
			  init_nb_resultats_ajax('recherche','frmMoteur_loisir');
             }
             
             if(lance_ajax_visites && document.getElementById('nb_resultats_ajax_visites') != undefined){
			  init_nb_resultats_ajax('recherche','frmMoteur_visites');
             }
             
			
			if(MODE_AFFICHAGE.value == 'PAGE') {
            
                idJourEnCours = 'id_jour_' + dateSelectionne;                
                idJourPrecedent = 'id_jour_' + CHAMPS_SELECT_PRECEDENT.value; 
                //le 19/05/2011 cause des pb akopso car ce champs n'est pas utilisé
                //cssJourPrecedent = document.getElementById('CSS_JOUR_' + CHAMPS_SELECT_PRECEDENT.value).value;
                                
                // --- Enregistre l'id et la CSS du champs en cours --- //                
                CHAMPS_SELECT_PRECEDENT.value = dateSelectionne;
                //document.getElementById(idJourPrecedent).className = cssJourPrecedent;
                //document.getElementById(idJourPrecedent).setAttribute("onmouseout", "this.className=\'" + cssJourPrecedent+ "\'");
                
                // --- on applique la CSS "date sélectionnée" --- //                
                document.getElementById(idJourEnCours).setAttribute("onmouseout", "");                
                document.getElementById(idJourEnCours).className = 'calendrierDateInputJourActif';                                                            
                
            } else {
            
                calendrier.style.visibility =  'hidden';
            
            }	
	}
	
	/**
	 * Action l'on selectionne une date dans le calendrier, 
	 * remplit le champs input et ferme le calendrier
	 * @param champs Le nom du champs date input
	 * @param dateSelectionne La date que l'on a selectionnée
	 */
	function calendrierDateInputSelectDateFaconVendre(champs,dateSelectionne,chaine,langue,champDateFin,nb_jour_mini,nb_jour_maxi,id_champ_duree) {
			var calendrier = document.getElementById(champs + '_CAL');
			var dateInput = document.getElementById(champs + '_ID');
			var dateInput = document.getElementById(champs + '_ID');
			dateInput.value = dateSelectionne;
			var MODE_AFFICHAGE = document.getElementById(champs + '_MODE_AFFICHAGE');								
			var CHAMPS_SELECT_PRECEDENT = document.getElementById(champs + '_CHAMPS_SELECT_PRECEDENT');
            var CHAMPS_CACHE = document.getElementById(champs + '_CHAMPS_CACHE');
			var champDuree = '';
			
												
			
			// Requete AJAX
			var xhr = calendrierDateInputCreateXHR();
 			xhr.open('GET', 'plugin/calendrierdispo/ajax.php?action=duree_dynamique&langue=' + langue + '&chaine=' + chaine + '&champDateFin=' + champDateFin + '&nb_jour_mini=' + nb_jour_mini + '&nb_jour_maxi=' + nb_jour_maxi + '&id_champ_duree=' + id_champ_duree);
 			xhr.onreadystatechange = function() {
				if(xhr.readyState == 4){    
		        
			        var response = xhr.responseText;
			        var html = new String();
			      	
			        // Récupération du code HTML
			        html = response;
			        
			        champDuree.innerHTML = html;
		    	}
			};
		  	xhr.send(null);
			
			tabCampsCache = CHAMPS_CACHE.value.split("[");
			for(iTab=0; iTab<tabCampsCache.length; iTab++)			
			{cacheChamps('ON', tabCampsCache[iTab]);}	
            
            var lance_ajax = 1;
            var lance_ajax_loisir = 1;
            var lance_ajax_visites = 1;
            if(document.getElementById('traite_un_seul_init_nb_res') != undefined && document.getElementById('traite_un_seul_init_nb_res').value == 'OUI'){
			     //datedebactivite_loisir
			     if (champs.indexOf('_') >= 0){
                    var fin_du_champs = champs.substring(champs.indexOf('_'));
                    if (fin_du_champs == '_loisir'){
                        lance_ajax = 0;
                        lance_ajax_visites = 0;
                    } else {
                        if (fin_du_champs == '_visites'){
                            lance_ajax = 0;
                            lance_ajax_loisir = 0;
                        } 
                    } 
                 } else {
                     lance_ajax_visites = 0;
                     lance_ajax_loisir = 0;
                 }
            }							                    
          
            if(lance_ajax && document.getElementById('nb_resultats_ajax') != undefined){
            	init_nb_resultats_ajax('recherche');
            }
            if(document.getElementById('nb_resultats_ajax_ot') != undefined){
				init_nb_resultats_ajax('recherche');
            }
			if(document.getElementById('nb_resultats_ajax_hotel') != undefined){
				init_nb_resultats_ajax_hotel('recherche');
			}
			if(document.getElementById('nb_resultats_ajax_visite') != undefined){
				init_nb_resultats_ajax_visite('recherche');
			}
			if(document.getElementById('nb_resultats_ajax_prestation') != undefined){
				init_nb_resultats_ajax_prestation('recherche');
			}
			 
             if(document.getElementById('nb_resultats_ajax_frmMoteur') != undefined){
			  init_nb_resultats_ajax('recherche','frmMoteur');
             }
             
             if(document.getElementById('nb_resultats_ajax_frmMiniMoteur') != undefined){
			  init_nb_resultats_ajax('recherche','frmMiniMoteur');
             }
             
             if(document.getElementById('nb_resultats_ajax_frmMoteurDroite') != undefined){
			  init_nb_resultats_ajax('recherche','frmMoteurDroite');
             }
             
             if(lance_ajax_loisir && document.getElementById('nb_resultats_ajax_loisir') != undefined){
				init_nb_resultats_ajax('recherche','frmMoteur_loisir');
             }
             
             if(lance_ajax_visites && document.getElementById('nb_resultats_ajax_visites') != undefined){
				init_nb_resultats_ajax('recherche','frmMoteur_visites');
             }
             
			if(MODE_AFFICHAGE.value == 'PAGE') {
            
                idJourEnCours = 'id_jour_' + dateSelectionne;                
                idJourPrecedent = 'id_jour_' + CHAMPS_SELECT_PRECEDENT.value; 
                //le 19/05/2011 cause des pb akopso car ce champs n'est pas utilisé                
                if (document.getElementById('CSS_JOUR_' + CHAMPS_SELECT_PRECEDENT.value) != undefined) {
                    cssJourPrecedent = document.getElementById('CSS_JOUR_' + CHAMPS_SELECT_PRECEDENT.value).value;
                } else {
                    cssJourPrecedent = '';
                } 
                                
                // --- Enregistre l'id et la CSS du champs en cours --- //                
                CHAMPS_SELECT_PRECEDENT.value = dateSelectionne;
                document.getElementById(idJourPrecedent).className = cssJourPrecedent;
                document.getElementById(idJourPrecedent).setAttribute("onmouseout", "this.className=\'" + cssJourPrecedent+ "\'");
                
                // --- on applique la CSS "date sélectionnée" --- //                
                document.getElementById(idJourEnCours).setAttribute("onmouseout", "");                
                document.getElementById(idJourEnCours).className = 'calendrierDateInputJourActif';                                                            
                
            } else {
            
                calendrier.style.visibility =  'hidden';
            
            }
            	
	}
	
	/**
	 * Action pour changer de mois dans le calendrier
	 * @param champs Le nom du champs date input
	 * @param langue La langue du calendrier (ex : FR, UK ect..)
	 * @param d La mois suivant ou precedent sous la forme YYYYMM
	 */
	function calendrierDateInputChangeMois(champs,langue, d,champDateFin,nb_jour_mini,nb_jour_maxi,id_champ_duree) {
		
		  var calendrier = document.getElementById(champs + '_CAL');
		  var AUTORISE_DATE_PASSE = document.getElementById(champs + '_AUTORISE_DATE_PASSE');
		  var FORMAT_DATE = document.getElementById(champs + '_FORMAT_DATE');
		
		  // Options
		  var WEEKEND_UNIQUEMENT = document.getElementById(champs + '_WEEKEND_UNIQUEMENT');
		  var WEEKEND_START = document.getElementById(champs + '_WEEKEND_START');
		  var MODE_AFFICHAGE = document.getElementById(champs + '_MODE_AFFICHAGE');
		  var JS_ONCLICK_JOUR = document.getElementById(champs + '_JS_ONCLICK_JOUR');		  
		  var INTERVAL_QUART_HEURE = document.getElementById(champs + '_INTERVAL_QUART_HEURE');		  
		  var SEMAINE_UNIQUEMENT = document.getElementById(champs + '_SEMAINE_UNIQUEMENT');
		  var SEMAINE_FIN = document.getElementById(champs + '_SEMAINE_FIN');
		  var DATE_LIMITE_RESA = document.getElementById(champs + '_DATE_LIMITE_RESA');
		  var DATE_MAX_RESA = document.getElementById(champs + '_DATE_MAX_RESA');
		  var JOUR_UNIQUEMENT = document.getElementById(champs + '_JOUR_UNIQUEMENT');
		  var LISTE_DATES = document.getElementById(champs + '_LISTE_DATES');
		  var PLANNING_RECHERCHE = document.getElementById(champs + '_PLANNING_RECHERCHE');
	  	  var CRITERES_RECHERCHE = document.getElementById(champs + '_CRITERES_RECHERCHE');
		  var PROMO_RECHERCHE = document.getElementById(champs + '_PROMO_RECHERCHE');
		  var HAUT_INCLUDE_SPECIAL = document.getElementById(champs + '_HAUT_INCLUDE_SPECIAL');
		  var DUREE_QUART_MIN_LIBRE = document.getElementById(champs + '_DUREE_QUART_MIN_LIBRE');		  
		  var dateEnCours = document.getElementById(champs + '_ID');		  		  
		  
		  //alert( html);
		  
         if(document.getElementById(id_champ_duree) != null) {
			     champDuree = document.getElementById(id_champ_duree);
			}
           
		 var attente_html = '';
                  attente_html = attente_html + '<table cellspacing="0" cellpadding="3"  style="width:155px;height:165px;">';
                  attente_html = attente_html + '<tr><td align="center" valign="center">';
                  attente_html = attente_html + '<img src="plugin/calendrierdispo/img/ajax-loader.gif" border="0">';
                  switch (langue)
          {
            case 'FR':
                attente_html = attente_html + '<br><br><span style="color:#000"><b>Recherche des dates disponibles ... </b></span>';
                break;
            default:
            case 'UK':
                attente_html = attente_html + '<br><br><span style="color:#000"><b>Search for available dates ... </b></span>';
                break;
          }
          attente_html = attente_html + '</td></tr>';
          attente_html = attente_html + '</table>';
          calendrier.innerHTML = attente_html;          		  
		  
		  // Requete AJAX
		  var xhr = calendrierDateInputCreateXHR();
	   				xhr.onreadystatechange = function() {
						if(xhr.readyState == 4){    
		        
			        var response = xhr.responseText;
			        var html = new String();
			      
			        // Récupération du code HTML
			        html = response;
					    calendrier.className = "calendrierDateInput";
			        calendrier.innerHTML = html;
		    		}
				};
				
			xhr.open('GET', 'plugin/calendrierdispo/calendrier.ajax.php?champs=' + champs + '&langue=' + langue + '&autorise_date_passe=' 
				+ AUTORISE_DATE_PASSE.value
                + '&date_selection=' + dateEnCours.value 
				+ '&weekend_uniquement=' + WEEKEND_UNIQUEMENT.value				
				+ '&weekend_start=' + WEEKEND_START.value
				+ '&mode_affichage=' + MODE_AFFICHAGE.value
				+ '&js_onclick_jour=' + JS_ONCLICK_JOUR.value				
				+ '&interval_quart_heure=' + INTERVAL_QUART_HEURE.value				
				+ '&semaine_uniquement=' + SEMAINE_UNIQUEMENT.value
				+ '&semaine_fin=' + SEMAINE_FIN.value
				+ '&date_limite_resa=' + DATE_LIMITE_RESA.value
				+ '&date_max_resa=' + DATE_MAX_RESA.value
				+ '&jour_uniquement=' + JOUR_UNIQUEMENT.value
				+ '&liste_dates=' + LISTE_DATES.value
				+ '&planning_recherche=' + PLANNING_RECHERCHE.value
				+ '&criteres_recherche=' +  CRITERES_RECHERCHE.value
				+ '&promo_recherche=' + PROMO_RECHERCHE.value
				+ '&haut_include_special=' + HAUT_INCLUDE_SPECIAL.value
				+ '&duree_quart_min_libre=' + DUREE_QUART_MIN_LIBRE.value				
				+ '&format_date=' + FORMAT_DATE.value + '&d=' + d
				+ '&champDateFin=' + champDateFin
				+ '&nb_jour_mini=' + nb_jour_mini 
				+ '&nb_jour_maxi=' + nb_jour_maxi
				+ '&id_champ_duree=' + id_champ_duree);
		   xhr.send(null);
	}		
	
	/**
	 * Pour ferme le calendrier
	 * @param champs Le nom du champs date input
	 */
	function  calendrierDateInputFermer(champs) {
	  var calendrier = document.getElementById(champs + '_CAL');
	  var CHAMPS_CACHE = document.getElementById(champs + '_CHAMPS_CACHE');
			
	  tabCampsCache = CHAMPS_CACHE.value.split("[");
	  for(iTab=0; iTab<tabCampsCache.length; iTab++)			
	  {cacheChamps('ON', tabCampsCache[iTab]);}
	  
	  calendrier.style.visibility =  'hidden';
	}	
