
/**
 * Retourne le nombre d'éléments d'objet Javascript
 * @param obj {object} L'objet dont on veut connaître la taille
 * @returns {number} Le nombre d'éléments de l'objet
 */
function arraySize(obj) {
  var len = obj.length ? --obj.length : 0;
  for(var k in obj) len++;
  return len;
}

/**
 * Cette fonction vérifie la validité de l'heure dans
 * les moteurs de recherche
 * @param form_id {string} attribut id html du formulaire associé
 * @param conditions {Array} liste des conditions du controle de formulaire
 * @returns {bool} true si le test est validé
 */
function formCheckHour(form_id, conditions) {
  var dateFull = $('#' + form_id + ' [name="dateFull"]').val();
  var dateComponents = dateFull.split('/');
  var hour = $('#' + form_id + ' [name="hour"]').val();
  var minute = $('#' + form_id + ' [name="minute"]').val();
  var selectedDate = new Date();
  selectedDate.setFullYear(dateComponents[2]);
  selectedDate.setMonth(dateComponents[1] - 1);
  selectedDate.setDate(dateComponents[0]);
  selectedDate.setHours(hour);
  selectedDate.setMinutes(minute);
  var selectedTime = selectedDate.getTime();

  var currentDate = new Date();
  var currentTime = currentDate.getTime();
  var currentTimeModulo = currentTime % 300000;
  var currentTime = currentTime - currentTimeModulo;

  var test = (selectedTime >= currentTime)
  
  if(!test) {
    $('#timeFieldErrorContainer').addClass('err');
  } else {
    $('#timeFieldErrorContainer').removeClass('err');
  }
  
  return test;
}

/**
 * Affiche l'écran de chargement
 */
function loadingScreen() {
  $('#loading-block').html('<div id="loading-window"></div><p id="loading-text">Veuillez patienter...</p>');
  $('#loading-window').css('opacity', 0);
  $('#loading-window').show();
  $('#loading-window').animate({opacity: 0.5}, 1000);
  $('#loading-text').css('opacity', 0);
  $('#loading-text').show();
  $('#loading-text').animate({opacity: 1}, 500);
}

/**
 * Affiche l'écran de chargement,
 * alias de loadingScreen pour assurer la retrocompatibilité
 */
function LogoWaitRunning() {
	loadingScreen();
}

/**
 * Supprime l'écran de chargement
 */
function clearLoadingScreen() {
  $('#loading-block').html('');
}

/**
 * Actions réalisées au chargement de toutes les pages
 */
$(document).ready(function() {
  // Ecran de chargement sur les balises ayant la class "loading-link"
  $('.loading-link').bind('click', function() {
    loadingScreen();
  });

  $('.toggle-header').click(function(){
    $(this).next('.toggle-paragraph').slideToggle(200) ;
  });
});

/**
 *
 */
function formCheckPrecisionDeparture (form_id, conditions){
  var fieldRadioCount = $('#fieldset_Departure input[type="radio"]').length;
  var fieldCheckedCount = $('#fieldset_Departure input[name="edtDeparture"]:checked').length;
  if(fieldRadioCount > 0) {
    if(fieldCheckedCount == 1) {
      return true;
    } else {
      return false;
    }
  } else {
    if($('#edtDeparture').length > 0) {
      if($('#edtDeparture').val() != '') {
        return true;
      } else {
        return false;
      }
    } else {
      if($('#Departure').val() != '') {
        return true;
      } else {
        return false;
      }
    }
  }
}

/**
 *
 */
function formCheckPrecisionDestination (form_id, conditions){
  var fieldRadioCount = $('#fieldset_Destination input[type="radio"]').length;
  var fieldCheckedCount = $('#fieldset_Destination input[name="edtDestination"]:checked').length;
  if(fieldRadioCount > 0) {
    if(fieldCheckedCount == 1) {
      return true;
    } else {
      return false;
    }
  } else {
    if($('#edtDestination').length > 0) {
      if($('#edtDestination').val() != '') {
        return true;
      } else {
        return false;
      }
    } else {
      if($('#Destination').val() != '') {
        return true;
      } else {
        return false;
      }
    }
  }
}
