/**
 * Librairie de fonction JavaScript
 * 
 * Dernière modif: 27/04/2006
 *
 * @version 1.1
 */

// permet d'ouvrir une fenêtre popup
function newwin(url, scroll, largeur, hauteur, top, left)
{
  if(top == null)
    top = 0;
  if(left == null)
    left = 0;

  top += 10;
  left += 10;

  if(largeur == 0)
    largeur = window.screen.availWidth;
  if(hauteur == 0)
    hauteur = window.screen.availHeight;

  window.open(url,'','toolbar=0,location=0,directories=0,menuBar=0,scrollbars=' + scroll + ',resizable=1,width=' + largeur + ',height=' + hauteur + ',top=' + top + ',left=' + left + ',copyhistory=0,dependent=0')
}

// compte le nombre de caractère d'un type texte
function count_chars(obj,max_chars,obj_cpt)
{
  var value = obj.value;
	var current_length = value.length;

	reste_chars = max_chars - current_length;

	obj_cpt.value = reste_chars;

	if( current_length >= max_chars )
	  alert(max_chars + " caractères dépasser !!!\nTous les caractères au delà du " + max_chars + "ème seront tronqués !!!");
}

// transfert une option d'une liste à choix simple ou multiple vers une autres liste similaire
function add(obj_org,obj_dest)
{
  for(k=0; k < obj_org.length; k++)
  {
		if(obj_org.options[k].selected)
		{
		  var myOption = document.createElement("OPTION");

		  myOption.text  = obj_org.options[k].text;
		  myOption.value = obj_org.options[k].value;

		  obj_dest.options[obj_dest.length] = myOption;
		  obj_org.options[k] = null;
			k--;

			delete myOption;
		}
  }
}

/**
* Supprime les options sélectionnés
*/
function remove(obj)
{
  for(k=0; k < obj.length; k++)
  {
		if(obj.options[k].selected)
		{
		  obj.options[k] = null;
			k--;
		}
  }
}

/**
* Supprime une option par valeur
*/
function remove_value(obj, val)
{
  for(k=0; k < obj.length; k++)
  {
		if(obj.options[k].value == val)
		{
		  obj.options[k] = null;
			k--;
		}
  }
}

/**
* Selectionne toutes les options d'une liste à choix multiple
*/
function select_all(obj)
{
  for(var k=0; k < obj.length; k++)
  {
	  obj.options[k].selected = true;
	}
}

/**
* Déselectionne tous les éléments d'une liste
*/
function select_none(obj)
{
  for(var k=0; k < obj.length; k++)
  {
	  obj.options[k].selected = false;
	}
}

/**
* Supprime la totalité des éléments options d'un select
*
* Effectue une suppression des éléments options d'un select list.
* A chaque suppression, toute la liste remonte d'un cran.
* L'élément à supprimer à donc toujours l'index 0.
*/
function remove_all(obj)
{
	var count = obj.length;

  for(var k=0; k < count; k++)
  {
	  obj.options[0] = null;
	}
}

// selectionne une option d'une liste à choix simple, ou la première correspondance d'une liste à choix multiple
function selectValue(obj,val)
{
  for(var k=0; k < obj.length; k++)
  {
    if(obj.options[k].value == val)
    {
	    obj.options[k].selected = true;
	    break;
	  }
	}
}

// copie une ou des valeurs d'un select list vers une autre
function copy(obj_src, obj_dest)
{
  for(var k=0; k < obj_src.length; k++)
  {
	  if(obj_src.options[k].selected)
	  {
	    var opt = new Option();
	    opt.value = obj_src.options[k].value;
	    opt.text = obj_src.options[k].text;

	    obj_dest.options[obj_dest.length] = opt;
	    //obj_src.options[k] = opt;
	  }
	}
}

// équivalent de la foncion str_pad de PHP
function strPad(str,pad_length,pad_string,pad_type)
{
  if( (str == null) || (pad_length == undefined) )
    return str;

  if(pad_string == null)
    pad_string = " ";

  if(pad_type == null)
    pad_type = "RIGHT";

  var add_string = "";

  for(var k=str.length; k < pad_length; k++)
    add_string += pad_string;

  switch(pad_type)
  {
    case "LEFT":
      return add_string + str;
      break;
    case "RIGHT":
      return str + add_string;
      break;
    default:
      break;
  }
}

// vérifie si l'URL d'appel d'un popup est une page précise
function check_parent_url(string_url)
{
  var url_parent = opener.location.href;

  if( url_parent.substring( url_parent.lastIndexOf('/')+1 , url_parent.indexOf('?') ) == string_url)
    return true;

  return false;
}


/**
 * monte ou descend une valeur dans une select list
 */
function move(obj, sens)
{
	for(var k=0; k < obj.options.length; k++)
	{
		if( obj.options[k].selected && (obj.options[k] != "") )
		{
			switch(sens)
      {
        case "up":
          var i = k-1;
          break;

        case "down":
          var i = k+1;
          break;

        default:
          return true;
          break;
      }

      if( (i < 0) || (i >= obj.options.length) )
      {
        //alert("Bornes atteintes");
        return false;
      }

      // k : objet à remplacer par i
      // i : objet à remplacer par k

			var tmpval 	= obj.options[k].value;
			var tmptxt 	= obj.options[k].text;

			obj.options[k].value 	= obj.options[i].value;
			obj.options[k].text 	= obj.options[i].text
			obj.options[i].value 	= tmpval;
			obj.options[i].text 	= tmptxt;

			obj.options[k].selected = false;
			obj.options[i].selected = true;

			if( (k+1) == i )
				k+=1;
  	}
	}

	return true;
}

/**
 * Remplace une ou des options par les valeurs passées
 */
function replace_option(obj,new_val,new_txt)
{
	for(var k=0; k < obj.options.length; k++)
	{
		if( obj.options[k].selected)
		{
			if( new_val != null )
				obj.options[k].value = new_val;

			if( new_txt != null )
				obj.options[k].text = new_txt;
		}
	}

	return true;
}

/**
 * Ajoute une ou des options à une list
 */
function add_option(obj,val,txt,sel)
{
	var myOption = document.createElement("OPTION");

	myOption.text  = txt;
	myOption.value = val;

	obj.options[obj.options.length] = myOption;
	obj.options[obj.options.length-1].selected = sel;
}

function is_numeric(str)
{
	var exp = new RegExp('^[0-9-.]+$','g');
	return exp.test(str);
}

