
// recharge la page avec un ou des paramètres quelconques, 
// le paramètre est indiqué dans l'argument param : "param=xxx"
// (possibilté de cumuler : "param1=valeur1, param2=valeur2,...")
function recharge_page() {
  var query = location.search.substring(1);
  if (arguments.length == 1) query = change_query(query, arguments[0]);
  else {
    for (var i=0;i<arguments.length;i++) query = change_query(query, arguments[i]);
  }
  location.href = location.pathname + (query ? "?" + query : "");
}

// change une URL en fonction du paramètre reçu : "param0=XX"
function change_query(query, param) {
  // découpe param "variable=valeur" en variable et valeur
  var pos = param.indexOf("=");
  if (pos == -1) {
    var variable = param;
    var valeur = "";
  }
  else {
    var variable = param.substring(0, pos+1); // "variable="
    if (pos == param.length-1) var valeur = "";
    else var valeur = param.substring(pos+1); // "valeur"
  }
  if (variable == "*") query = "";
  // si on a déjà des paramètres
  else if (query) {
    // la variable n'est pas trouvée dans la chaîne query : on rajoute param au query
    if (query.indexOf(variable) == -1) query += valeur ? "&" + param : "";
	// sinon, il se peut qu'elle y ait, mais on peut avoir aussi "id_page=" alors qu'on cherche "page="
	else {
      var params = query.split("&");
      var num_param = ordre_param(params, variable.substring(0, variable.length-1));
      // si le paramètre n'existe pas déjà dans le query, on le rajoute à la fin
      if (num_param == -1) query += valeur ? "&" + param : "";
      // sinon on le change ou on le supprime (si valeur est vide)
      else {
        if (valeur) params[num_param] = param;
        else params.splice(num_param, 1);
        query = params.length ? params.join("&") : "";
      }
	}
  }
  // on n'a pas de paramètre actuellement, le query = le param
  else if (valeur) query = param;
  return query;
}

// recherche une variable dans le tableau des params
// retourne l'indice correspondant du tableau en cas de succès, -1 en cas d'échec
function ordre_param(params, variable) {
  var i = 0;
  while (i<params.length) {
    var elts_param = params[i].split("=");
    if (elts_param[0] == variable) break;
	else i++;
  }
  if (i == params.length) return -1;
  else return i;
}