﻿//Fonctions de manipulation de date
function firstDayWeek(dateWeek) {
  var dateWeekFirst = new Date();
  
  nj = dateWeek.getDay();
  if(nj == 0) {
    nj = 7;
  }
  
  dateWeekFirst.setTime((dateWeek.getTime() - (nj - 1) * 1000 * 3600 * 24))
  
  return dateWeekFirst;
}

function dateDuJour() {
  var s = "";
  var jour = "";
  var mois = "";

  var dateObj = new Date();
  jour += dateObj.getDate();
  mois += (dateObj.getMonth()+1);

  if(jour.length < 2) {
    jour = "0" + jour;
  }
  
  if(mois.length < 2) {
    mois = "0" + mois;
  }
  
  s+= jour + "/" + mois + "/" + dateObj.getFullYear();
  return s;
}

function formatDateAJAX(dateObj) {
  var s = "";
  var jour = "";
  var mois = "";

  jour += dateObj.getDate();
  mois += (dateObj.getMonth()+1);

  if(jour.length < 2) {
    jour = "0" + jour;
  }
  
  if(mois.length < 2) {
    mois = "0" + mois;
  }
  
  s+= jour + "/" + mois + "/" + dateObj.getFullYear();
  return s;
}

function formatDateAJAX_US(dateObj) {
  var s = "";
  var jour = "";
  var mois = "";

  jour += dateObj.getDate();
  mois += (dateObj.getMonth()+1);

  if(jour.length < 2) {
    jour = "0" + jour;
  }
  
  if(mois.length < 2) {
    mois = "0" + mois;
  }
  s+= mois + "/" + jour + "/" + dateObj.getFullYear();
  
  return s;
}

function addDay(dateObj,nb) {
  var newDate = new Date();
  newDate.setTime((dateObj.getTime() + nb * 1000 * 3600 * 24))
  return newDate;
}

function parseDate(content) {
  var elements = content.split('/');
  var newDate = new Date(elements[2],(elements[1]-1),elements[0]);
  return newDate;
}

function searchDayNumberMonth(dateObj) {
  var refDate = new Date(dateObj.getFullYear(),dateObj.getMonth(),"28");
  var nb = 28;

  var testDate = addDay(refDate,1);  
  while(refDate.getMonth() == testDate.getMonth()) {
    nb++;
    testDate = addDay(testDate,1);
  }
  return nb;
}

function numWeekISO(dateObj) {
  var dateWeek = firstDayWeek(dateObj);
  var refDate = new Date(dateWeek.getFullYear(),0,1);
  var refDay = refDate.getDay();
  if(refDay == 0 || refDay > 4) { //Bout de semaine comptant pour du beurre
    if(refDay == 0) {
      var semaine1 = addDay(refDate,1);
    }
    else {
      var semaine1 = addDay(refDate,(7 - refDay) + 1);
    }
    
    if(dateWeek.getTime() < semaine1.getTime()) {
      var oldDate = new Date(dateWeek.getFullYear()-1,11,31);
      return numWeekISO(oldDate);
    }
    else {
      var miliTime = dateWeek.getTime() - refDate.getTime();
      return (miliTime/(3600*1000*24*7)+1);      
    }
  }
  else { //Bout de semaine comptant comme la premiere
    var semaine2 = addDay(refDate,(7 - refDay) + 1);
    if(dateWeek.getTime() < semaine2.getTime()) {
      return 1;
    }
    else {
      var miliTime = dateWeek.getTime() - refDate.getTime();
      return (miliTime/(3600*1000*24*7)+1);
    }
  }
  return false;
}
