/*
js pour editer les disponibilités
*/

/*
idées, à faire
- 2 types de selection possibles : par periode (deja fait), date par date
- date par date :
  on cache les selects, on selectionne les jours en cliquant sur les cases.
  les jours choisis s'affichent dans le cadre d'edition, une ligne texte par jour choisi
*/

//affichage du calendrier avec gestion
function afficheCalendrierDisponibilites(chemin,jour,mois,annee,div,init) {
    var contenu = runfile(chemin+"ajax/ajaxCalendrierDisponibilite.php?jour="+jour+"&thisMonth="+mois+"&thisYear="+annee);
    document.getElementById(div).innerHTML = contenu;
    document.getElementById(div).style.display = "block";
  //style des cases de date actives
  setStyleCasesDatesActives(chemin);
  if(init!="1") {
    document.getElementById("divEditDispos").style.display = "block";
  }
}

//affichage du calendrier
function afficheCalendrierDisponibilitesDetail(idEntreprise,idCategorieDisponibilite,chemin,jour,mois,annee,div,init) {
    var contenu = runfile(chemin+"ajax/ajaxCalendrierDisponibiliteDetail.php?idEntreprise="+idEntreprise+"&idCategorieDisponibilite="+idCategorieDisponibilite+"&jour="+jour+"&thisMonth="+mois+"&thisYear="+annee);
    document.getElementById(div).innerHTML = contenu;
    document.getElementById(div).style.display = "block";
  //style des cases de date actives
  setStyleCasesDatesActives(chemin);
  if(init!="1") {
    document.getElementById("divEditDispos").style.display = "block";
  }
}

//type de selection
function changeTypeSelection(chemin,valeur) {

  var init = false;
  /*
  if(document.getElementById("divEditDispos").innerHTML=="") {
      var contenu = runfile(chemin+"ajax/ajaxEditDisponibilite.php?jour=&mois=&annee=");
      document.getElementById("divEditDispos").innerHTML = contenu;  
      init = true;
  }
  */
  //document.getElementById("divEditDispos").style.display = "block";

  //stocke en session
  var contenu = runfile(chemin+"ajax/ajaxTypeSelectionDisponibilite.php?selection="+valeur);

  if(valeur=="1") {
    //jour par jour
    
    //si on a encore selectionné aucun jour en memoire, on stocke les valeurs des selects
    var nbCasesJours = runfile(chemin+"ajax/ajaxSetJourDisponibilite.php");
    if(nbCasesJours==0) {
      
      try {
        var jDeb = document.getElementById("jour").options[document.getElementById("jour").options.selectedIndex].value;
        var mDeb = document.getElementById("mois").options[document.getElementById("mois").options.selectedIndex].value;
        var aDeb = document.getElementById("annee").options[document.getElementById("annee").options.selectedIndex].value;
         
        var jFin = document.getElementById("jour_fin").options[document.getElementById("jour_fin").options.selectedIndex].value;
        var mFin = document.getElementById("mois_fin").options[document.getElementById("mois_fin").options.selectedIndex].value;
        var aFin = document.getElementById("annee_fin").options[document.getElementById("annee_fin").options.selectedIndex].value;
  
        //si une date de debut
        if(aDeb!="" && mDeb!="" && jDeb!="") {
          var nbCasesJours = runfile(chemin+"ajax/ajaxSetJourDisponibilite.php?jour="+parseInt(jDeb)+"&mois="+parseInt(mDeb)+"&annee="+parseInt(aDeb));
        }
         
        //si une date de fin
        if(aFin!="" && mFin!="" && jFin!="") {
          var nbCasesJours = runfile(chemin+"ajax/ajaxSetJourDisponibilite.php?jour="+parseInt(jFin)+"&mois="+parseInt(mFin)+"&annee="+parseInt(aFin));
        }
      } catch(e) {    
      }

    }
    
    if(document.getElementById("divEditDispos").innerHTML!="") {
      //desactive et masque les select
      document.getElementById("annee").disabled = true;
      document.getElementById("mois").disabled = true;
      document.getElementById("jour").disabled = true;
      try {
        document.getElementById("mois_fin").disabled = true;
        document.getElementById("annee_fin").disabled = true;
        document.getElementById("jour_fin").disabled = true;    
      } catch(e) {    
      }
  
      document.getElementById("divListeJoursparjour").style.display = "block";
      document.getElementById("divPeriode").style.display = "none";
      document.getElementById("divJourparjour").style.display = "block";    
    }


    //reset styles des cases
    resetStyleCasesDates();
    
    //affiche les cases actives
    activeCasesJourparJour(chemin);  

  } else {
    //par periode
    
    if(document.getElementById("divEditDispos").innerHTML!="") {
      document.getElementById("divPeriode").style.display = "block";
      document.getElementById("divJourparjour").style.display = "none";
      //reactive les select
      document.getElementById("annee").disabled = false;
      document.getElementById("mois").disabled = false;
      document.getElementById("jour").disabled = false;
      try {
        document.getElementById("mois_fin").disabled = false;
        document.getElementById("annee_fin").disabled = false;
        document.getElementById("jour_fin").disabled = false;    
      } catch(e) {    
      }      
    }
    
    //annule les jours selectionnés
    resetJoursSelectionnes(chemin);
    //reset styles des cases
    resetStyleCasesDates();    
    //reactive ceux selectionnés dans les selects
    if(!init) {
      setStyleCasesDatesActives(chemin);
    }
    
    
  }

}


function resetJoursSelectionnes(chemin) {
  //reset session
  //non car on garde en memoire si on veut y revenir
  //var contenu = runfile(chemin+"ajax/ajaxResetJoursSelectionnes.php");
  try {
    document.getElementById("divListeJoursparjour").innerHTML = "";
  } catch(e) {    
  }     
}


//edition des dispos d'une date donnée ou d'une période donnée
//maj des selects des dates et affichage du formulaire
function editDisponibilite(chemin,jour,mois,annee) {

  //en fonction du type de selection active, fonctions différentes !!!
  var typeSelection = runfile(chemin+"ajax/ajaxTypeSelectionDisponibilite.php");
  
  
  
  //jour par jour
  if(typeSelection=="1") {
    resetStyleCasesDates();
    
    var nbCasesJours = runfile(chemin+"ajax/ajaxSetJourDisponibilite.php?jour="+jour+"&mois="+mois+"&annee="+annee);

    if(document.getElementById("divEditDispos").innerHTML=="") {
      var contenu = runfile(chemin+"ajax/ajaxEditDisponibilite.php?jour="+jour+"&mois="+mois+"&annee="+annee);
      document.getElementById("divEditDispos").innerHTML = contenu;   
      changeTypeSelection(chemin,typeSelection);
      document.getElementById("divEditDispos").style.display = "block"; 
    }
    
    //change l'etat du select si c la 1ere case selectionnée
    if(nbCasesJours==1) {
      var etat = runfile(chemin+"ajax/ajaxGetEtatDisponibilite.php?jour="+jour+"&mois="+mois+"&annee="+annee);
      for(e=0;e<document.getElementById("etat").options.length;e++) {
        document.getElementById("etat").options[e].selected = false;
        if(document.getElementById("etat").options[e].value == etat) {
          document.getElementById("etat").options[e].selected = true;
        }
      }
    }

    //affiche les cases actives et liste les jours dans le cadre d'edition
    activeCasesJourparJour(chemin);
    
    //s'il reste encore un jour, affiche la div d'edition
    if(nbCasesJours>0) {
      document.getElementById("divEditDispos").style.display = "block";
    } else{
      document.getElementById("divEditDispos").style.display = "none";
    }
    
    

  //par période
  } else {
      if(document.getElementById("divEditDispos").innerHTML == "") {
        var contenu = runfile(chemin+"ajax/ajaxEditDisponibilite.php?jour="+jour+"&mois="+mois+"&annee="+annee);
        document.getElementById("divEditDispos").innerHTML = contenu;
        changeTypeSelection(chemin,typeSelection);    
      } else {
        //ne recharge pas le form mais cale la date 
        //si pas encore de date de debut choisie        
        if(document.getElementById("jour").options[0].selected) {
        
          document.getElementById("jour").options[jour].selected = true;
          document.getElementById("mois").options[mois].selected = true;
      
          for(var i=0;i<document.getElementById("annee").options.length;i++) {
            if(document.getElementById("annee").options[i].value == annee) {
              document.getElementById("annee").options[i].selected = true;
            }
          }          
        } else {
          document.getElementById("jour_fin").options[jour].selected = true;
          document.getElementById("mois_fin").options[mois].selected = true;
      
          for(var i=0;i<document.getElementById("annee_fin").options.length;i++) {
            if(document.getElementById("annee_fin").options[i].value == annee) {
              document.getElementById("annee_fin").options[i].selected = true;
            }
          }         
        }
      

  
    } 

    //controle des dates debut & fin
    controleDates();
    
    //style des cases de date actives
    setStyleCasesDatesActives(chemin);  
    
    document.getElementById("divEditDispos").style.display = "block";
  }
  

}

function activeCasesJourparJour(chemin) {
    var sortie = runfile(chemin+"ajax/ajaxGetCasesJourDisponibilite.php");
    var sortieArray = sortie.split(';');

    for(var i=0;i<sortieArray.length;i++) {
        var caseActive = sortieArray[i];
        try {
          if(caseActive!="") {
            setStyleCaseDateActive(caseActive);
          }
        } catch(e) { 
        }
    }

    try {
      var contenu = runfile(chemin+"ajax/ajaxGetJoursDisponibilite.php");
      document.getElementById("divListeJoursparjour").innerHTML = contenu;
      document.getElementById("divListeJoursparjour").style.display = "block";    
    } catch(e) {
    
    }

}

function controleDates() {
    //si 2e jour cliqué est avant le 1er
    //inverse les dates    


    var jDeb = parseInt(document.getElementById("jour").options[document.getElementById("jour").options.selectedIndex].value);
    var mDeb = parseInt(document.getElementById("mois").options[document.getElementById("mois").options.selectedIndex].value);
    var aDeb = parseInt(document.getElementById("annee").options[document.getElementById("annee").options.selectedIndex].value);
     
    var jFin = document.getElementById("jour_fin").options[document.getElementById("jour_fin").options.selectedIndex].value;
    var mFin = document.getElementById("mois_fin").options[document.getElementById("mois_fin").options.selectedIndex].value;
    var aFin = document.getElementById("annee_fin").options[document.getElementById("annee_fin").options.selectedIndex].value;
     
    //si une date de fin
    if(aFin!="" && mFin!="" && jFin!="") {
      document.getElementById("divReinitFin").style.display = "block";
    }

    if((aFin!="" && mFin!="" && jFin!="") && ((aFin<aDeb) || (aFin<=aDeb && mFin<mDeb) || (aFin<=aDeb && mFin<=mDeb && jFin<jDeb))) {
      
      jFin = parseInt(jFin);
      mFin = parseInt(mFin);
      aFin = parseInt(aFin);
      
      //date de fin : reprend les infos de la date de debut
      for(var i=0;i<document.getElementById("jour_fin").options.length;i++) {
        if(document.getElementById("jour_fin").options[i].value == document.getElementById("jour").options[document.getElementById("jour").options.selectedIndex].value) {
          document.getElementById("jour_fin").options[i].selected = true;
          break;
        }        
      } 
      for(var i=0;i<document.getElementById("mois_fin").options.length;i++) {
        if(document.getElementById("mois_fin").options[i].value == document.getElementById("mois").options[document.getElementById("mois").options.selectedIndex].value) {
          document.getElementById("mois_fin").options[i].selected = true;
          break;
        }        
      }      
      for(var i=0;i<document.getElementById("annee_fin").options.length;i++) {
        if(document.getElementById("annee_fin").options[i].value == document.getElementById("annee").options[document.getElementById("annee").options.selectedIndex].value) {
          document.getElementById("annee_fin").options[i].selected = true;
          break;
        }        
      }
      
      //date de debut : reprend les infos de la date de fin 
      //jour      
      for(var j=0;j<document.getElementById("jour").options.length;j++) {
        document.getElementById("jour").options[j].selected = false;
      }   
      document.getElementById("jour").options[jFin].selected = true;
      
      //mois
      for(var i=0;i<document.getElementById("mois").options.length;i++) {
        document.getElementById("mois").options[i].selected = false;
      }   
      document.getElementById("mois").options[mFin].selected = true;           
      
      //annee
      for(var i=0;i<document.getElementById("annee").options.length;i++) {
        document.getElementById("annee").options[i].selected = false;
        if(document.getElementById("annee").options[i].value == aFin) {
          document.getElementById("annee").options[i].selected = true;
        }
      }
            
    }
}

//style des cases de date actives
function setStyleCasesDatesActives(chemin) {

    //reinit style des cases de date
    resetStyleCasesDates();

    //en fonction du type de selection active, fonctions différentes !!!
    var typeSelection = runfile(chemin+"ajax/ajaxTypeSelectionDisponibilite.php");
    
    //jour par jour
    if(typeSelection=="1") {

      var sortie = runfile(chemin+"ajax/ajaxGetCasesJourDisponibilite.php?jour=&mois=&annee=");
      var sortieArray = sortie.split(';');
  
      for(var i=0;i<sortieArray.length;i++) {
          var caseActive = sortieArray[i];
          try {
            if(caseActive!="") {
              setStyleCaseDateActive(caseActive);
            }
          } catch(e) { 
          }
      }

    } else {
      //pour la selection par periode
      try {
        var caseDateDebut = parseInt(document.getElementById("jour").options[document.getElementById("jour").options.selectedIndex].value) + "_" + parseInt(document.getElementById("mois").options[document.getElementById("mois").options.selectedIndex].value) + "_" + parseInt(document.getElementById("annee").options[document.getElementById("annee").options.selectedIndex].value);
        setStyleCaseDateActive(caseDateDebut);
      } catch(e) { 
        //les selects ne sont pas actifs ou 
        //la case n'est pas dans ce mois  
      }
      try {
        if(document.getElementById("jour_fin").options[document.getElementById("jour_fin").options.selectedIndex].value!="") {
          var caseDateFin = parseInt(document.getElementById("jour_fin").options[document.getElementById("jour_fin").options.selectedIndex].value) + "_" + parseInt(document.getElementById("mois_fin").options[document.getElementById("mois_fin").options.selectedIndex].value) + "_" + parseInt(document.getElementById("annee_fin").options[document.getElementById("annee_fin").options.selectedIndex].value);
          setStyleCaseDateActive(caseDateFin);
        }
      } catch(e) { 
        //les selects ne sont pas actifs ou
        //la case n'est pas dans ce mois   
      }     
    }
 
 
}

function setStyleCaseDateActive(div) {
  document.getElementById(div).style.border = "3px solid #ff9900";
  document.getElementById(div).style.width = "44px";
}

//reinit style des cases de date
function resetStyleCasesDates() {
    
    var cases = document.getElementsByName("caseDateCalendrier");
    var a = document.getElementsByTagName('td');
    for (var i = 0; i < a.length; i++) {
      if (a[i].getAttribute('name')=="caseDateCalendrier") {
        var idCase = a[i].getAttribute("id");
            
        document.getElementById(idCase).style.border = "1px solid #000000";
        document.getElementById(idCase).style.width = "50px";      
      }
    }
}



function fermerDisponibilite(div) {
    document.getElementById(div).innerHTML = "";
    document.getElementById(div).style.display = "none"; 
}

function setJourSelect(chemin,mois,annee,selJour,valueJour) {
  //recup le nb de jours du mois en ajax
  var nbJours = runfile(chemin+"ajax/ajaxGetNbJoursMois.php?mois="+mois+"&annee="+annee);
  
  for(var i=0;i<document.getElementById(selJour).options.length;i++) {
    document.getElementById(selJour).remove(i);
  }
  
  document.getElementById(selJour).options[0] = new Option('', '');
  for(var i=1;i<=nbJours;i++) {
    j = i;
    document.getElementById(selJour).options[i] = new Option(j, j);
  }

  if(valueJour!="") {
    document.getElementById(selJour).options[valueJour].selected = true;
  } else {
    document.getElementById(selJour).options[1].selected = true;
  }
  
  
  /*document.forms['testform'].testselect.options[i] = new Option('nouveau texte','nouvelle value');
  alert(document.getElementById(selJour).options.length);*/
}

function resetDateFin(chemin) {
  try {
      //date de fin : reprend les infos de la date de debut
      for(var i=0;i<document.getElementById("jour_fin").options.length;i++) {
        document.getElementById("jour_fin").options[i].selected = false;
      } 
      for(var i=0;i<document.getElementById("mois_fin").options.length;i++) {
        document.getElementById("mois_fin").options[i].selected = false;
      }      
      for(var i=0;i<document.getElementById("annee_fin").options.length;i++) {
        document.getElementById("annee_fin").options[i].selected = false;
      }  
      document.getElementById("jour_fin").options[0].selected = true;
      document.getElementById("mois_fin").options[0].selected = true;
      document.getElementById("annee_fin").options[0].selected = true;
      
      setStyleCasesDatesActives(chemin);
      document.getElementById("divReinitFin").style.display = "none";
  } catch(e) {
  
  }
}
