/**
 * 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) {
					
			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 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 JOUR_UNIQUEMENT = document.getElementById(champs + '_JOUR_UNIQUEMENT');
			var LISTE_DATES = document.getElementById(champs + '_LISTE_DATES');			
			var CHAMPS_CACHE = document.getElementById(champs + '_CHAMPS_CACHE');
																			
			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/calendrier/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
						+ '&semaine_uniquement=' + SEMAINE_UNIQUEMENT.value
						+ '&semaine_fin=' + SEMAINE_FIN.value
						+ '&date_limite_resa=' + DATE_LIMITE_RESA.value
						+ '&jour_uniquement=' + JOUR_UNIQUEMENT.value
						+ '&liste_dates=' + LISTE_DATES.value
	 					+ '&format_date=' + FORMAT_DATE.value
	 					+ '&champDateFin=' + champDateFin);
			  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');
			
			tabCampsCache = CHAMPS_CACHE.value.split("[");
			for(iTab=0; iTab<tabCampsCache.length; iTab++)			
			{cacheChamps('ON', tabCampsCache[iTab]);}			
			//alert(dateSelectionne);
			if(champDateFin != ""){
				
				if(document.getElementById(champDateFin + '_ID')){
					var dateInputFin = document.getElementById(champDateFin + '_ID');
					dateInputFin.value = dateSelectionne;
				}
			}
			
			
			calendrier.style.visibility =  'hidden';
			
			if(document.getElementById('nb_resultats_ajax') != undefined){
			  init_nb_resultats_ajax('recherche');
            }
			
				
	}
	
	/**
	 * 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) {
		
		  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 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 JOUR_UNIQUEMENT = document.getElementById(champs + '_JOUR_UNIQUEMENT');
		  var LISTE_DATES = document.getElementById(champs + '_LISTE_DATES');
		
		  // 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/calendrier/calendrier.ajax.php?champs=' + champs + '&langue=' + langue + '&autorise_date_passe=' 
				+ AUTORISE_DATE_PASSE.value 
				+ '&weekend_uniquement=' + WEEKEND_UNIQUEMENT.value
				+ '&weekend_start=' + WEEKEND_START.value
				+ '&semaine_uniquement=' + SEMAINE_UNIQUEMENT.value
				+ '&semaine_fin=' + SEMAINE_FIN.value
				+ '&date_limite_resa=' + DATE_LIMITE_RESA.value
				+ '&jour_uniquement=' + JOUR_UNIQUEMENT.value
				+ '&liste_dates=' + LISTE_DATES.value
				+ '&format_date=' + FORMAT_DATE.value + '&d=' + d
				+ '&champDateFin=' + champDateFin);
		   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';
	}	
