function ouvre_fenetre(url, largeur, hauteur, nom_fenetre, autres_parametres)
{
	if (document.all)
	{
		var largeur_max = screen.width;
		var hauteur_max = screen.height;
	}
	else if (document.layers)
	{
		var largeur_max = window.outerWidth;
		var hauteur_max = window.outerHeight;
	}
	else
	{
		var largeur_max = 640;
		var hauteur_max = 480;
	}

	var offset_largeur = (largeur_max - largeur)/2, offset_hauteur = (hauteur_max - hauteur)/2;

	if (nom_fenetre == '')
	{
		nom_fenetre = 'fenetre_popup';
	}

	if (autres_parametres == '')
	{
		autres_parametres = ',scrollbars=yes,resizable=yes,directories=no,toolbar=no,titlebar=no,location=no,status=yes';
	}
	else if (autres_parametres.substring(0, 1) != ',')
	{
		autres_parametres = ',' + autres_parametres;
	}

	window.open(url,nom_fenetre,'width='+largeur+',height='+hauteur+',screenX='+offset_largeur+',screenY='+offset_hauteur+',top='+offset_hauteur+',left='+offset_largeur+autres_parametres);

	return;
}


function set_valeur_select(champ, valeur)
{
	// il faut forcer la valeur '' car IE n'assigne pas la valeur
	if(!valeur) {
		champ.value = '';
	} else {
		champ.value = valeur;
	}

	// on va lui donner une 2e chance
	if (champ.value != valeur)
	{
		for (i = 0; i < champ.options.length; i++)
		{
			if (champ.options[i].value == valeur)
			{
				champ.selectedIndex = i;
				i = champ.options.length;
			}
		}
	}
}

function fill_categories(formulaire, champ, categ_lst, null_name) {
	if (typeof (document.forms[formulaire].elements[champ]) != 'undefined')
	{
	  if (document.forms[formulaire].elements[champ].length==0)
	  {
	    var element = new Option(null_name, '');
	    document.forms[formulaire].elements[champ].options[document.forms[formulaire].elements[champ].length] = element;
	  }

	  for (var i = 0; i < categ_lst['id'].length; i++) {
		var element = new Option(categ_lst['name'][i], categ_lst['id'][i]);
		document.forms[formulaire].elements[champ].options[document.forms[formulaire].elements[champ].length] = element;
	  }
	}
}

function fill_subcategories(formulaire, champ, no_categ, categ_lst, subcateg_lst, null_name) {

	if (typeof (document.forms[formulaire].elements[champ]) != 'undefined') {
	    document.forms[formulaire].elements[champ].options.length = 0; // clear all values
		var element = new Option(null_name, '');
		document.forms[formulaire].elements[champ].options[document.forms[formulaire].elements[champ].length] = element;

		if (no_categ)
		{
			for (var i = 0; i < subcateg_lst[no_categ]['id'].length; i++) {
				var element = new Option(subcateg_lst[no_categ]['name'][i], subcateg_lst[no_categ]['id'][i]);
				document.forms[formulaire].elements[champ].options[document.forms[formulaire].elements[champ].length] = element;
			}
		}
	}
}

 // fait la validation d'un code postal canadien
 function check_cp(codep) {
	if (codep.length != 0)
	{
	    reg = /^[A-Z|a-z]{1}\d{1}[A-Z|a-z]{1}[ ,-]{0,1}\d{1}[A-Z|a-z]{1}\d{1}$/;
	    if(!reg.test(codep)) {
	      return 0;
	    } else {
	      return 1;
	    }
	}
  }


function writeToLayer(id, sHTML) {
  var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
  if (!el) return;
  var cntnt = '<div class="info">' + sHTML + '</div>';
  if (typeof el.innerHTML!="undefined") {
      el.innerHTML = cntnt;
  } else if (document.layers) {
			el.document.write(cntnt);
			el.document.close();
  }
}

function convert_text_all(texte) {
  texte=split_text64(texte);
  texte=strip_html(texte);
  texte=convert_tobr(texte);
  return texte;

}

function convert_tobr(texte) {
	texte=texte.replace(/\n/g,'<br>');
    return texte;
}

function split_text64(texte) {
  var re = /([^\s]{64})[^\s]{1,}/g;
  if(re.test(texte)){
	texte = texte.replace(re, "$1");
  }
  return texte;
}

function strip_html(texte) {
  var re = /<([^>]|\n)*>/g;
  if(re.test(texte)){
	texte = texte.replace(re, '');
  }
  return texte;
}

function get_base_nb_include(xarray, xtype) {

  return xarray[xtype]['nb_include'];
}

function get_base_item_id(xarray, xtype) {

  return xarray[xtype]['option_item_id'];
}


function get_base_price(xarray, xtype, xcateg, xsubcateg) {

  if (xarray[xtype] && xarray[xtype][xcateg] && xarray[xtype][xcateg][xsubcateg] )
  {
	return xarray[xtype][xcateg][xsubcateg]['price'];
  }
  if (xarray[xtype] && xarray[xtype][xcateg] && xarray[xtype][xcateg][''])
  {
    return xarray[xtype][xcateg]['']['price'];
  }
  if (xarray[xtype] && xarray[xtype][''] && xarray[xtype][''][''] )
  {
	return xarray[xtype]['']['']['price'];
  }

  return -1;
}

function get_std_price_with_val_qte(xarray, xtype, xcateg, xsubcateg, xval, xqte) {

  var price=-1;

  if (xarray[xtype] && xarray[xtype][xcateg] && xarray[xtype][xcateg][xsubcateg] &&  xarray[xtype][xcateg][xsubcateg][xval] )
  {
	price=get_price_from_phash(xarray[xtype][xcateg][xsubcateg][xval], xqte);
  } else if (xarray[xtype] && xarray[xtype][xcateg] && xarray[xtype][xcateg][''])
  {
	price=get_price_from_phash(xarray[xtype][xcateg][''][xval], xqte);
  }
  else if (xarray[xtype] && xarray[xtype][''] && xarray[xtype][''][''] )
  {
	price=get_price_from_phash(xarray[xtype][''][''][xval], xqte);
  }
  return price;
}

function get_std_price_with_qte_only(xarray, xtype, xcateg, xsubcateg, xqte) {

  if (xarray[xtype] && xarray[xtype][xcateg] && xarray[xtype][xcateg][xsubcateg] )
  {
	xdata=xarray[xtype][xcateg][xsubcateg];
  } else if (xarray[xtype] && xarray[xtype][xcateg] && xarray[xtype][xcateg][''])
  {
	xdata=xarray[xtype][xcateg][xsubcateg];
  } else if (xarray[xtype] && xarray[xtype][''] && xarray[xtype][''][''] )
  {
	xdata=xarray[xtype][''][''];
  }
  for (var i in xdata) {
    qte_min=xdata[i]['qte_start'];
    qte_max=xdata[i]['qte_end'];
    type_qte=xdata[i]['type_qte'];
	price=xdata[i]['price'];
	if (qte_min<=xqte && qte_max>=xqte)
	{
	  if (type_qte=='FIX')
	  {
	    return new Array(price,i);
	  } else if (type_qte=='CALC')
	  {
	    return new Array(price*xqte,i);
	  }
	}
  }
  return new Array(-1,0);
}

function get_price_from_phash(xdata, xqte) {

	if (xdata['type_qte']=='FIX')
	{
	  return xdata['price'];
	} else if (xdata['type_qte']=='CALC')
	{
	  return xdata['price']*xqte;
	}
}

function format_prix(prix, lang) {
  if (lang=='fr')
  {
    return prix+' $';
  } else {
    return '$ '+prix;
  }
}
///////////pour l'admin

function get_base_nb_include2(xarray, package_id, xtype) {

  return xarray[package_id][xtype]['nb_include'];
}

function get_base_item_id2(xarray, package_id, xtype) {

  return xarray[package_id][xtype]['option_item_id'];
}


function get_base_price2(xarray, package_id, xtype, xcateg, xsubcateg) {

  if (xarray[package_id][xtype] && xarray[package_id][xtype][xcateg] && xarray[package_id][xtype][xcateg][xsubcateg] )
  {
	return xarray[package_id][xtype][xcateg][xsubcateg]['price'];
  }
  else if (xarray[package_id][xtype] && xarray[package_id][xtype][xcateg] && xarray[package_id][xtype][xcateg][''])
  {
    return xarray[package_id][xtype][xcateg]['']['price'];
  }
  else if (xarray[package_id][xtype] && xarray[package_id][xtype][''] && xarray[package_id][xtype][''][''] )
  {
	return xarray[package_id][xtype]['']['']['price'];
  }

  return -1;
}

function get_std_price_with_val_qte2(xarray, package_id, xtype, xcateg, xsubcateg, xval, xqte) {

  var price=-1;

  if (xarray[package_id][xtype] && xarray[package_id][xtype][xcateg] && xarray[package_id][xtype][xcateg][xsubcateg] &&  xarray[package_id][xtype][xcateg][xsubcateg][xval] )
  {
	price=get_price_from_phash(xarray[package_id][xtype][xcateg][xsubcateg][xval], xqte);
  }
  else if (xarray[package_id][xtype] && xarray[package_id][xtype][xcateg] && xarray[package_id][xtype][xcateg][''])
  {
	price=get_price_from_phash(xarray[package_id][xtype][xcateg][''][xval], xqte);
  }
  else if (xarray[package_id][xtype] && xarray[package_id][xtype][''] && xarray[package_id][xtype][''][''] )
  {
	price=get_price_from_phash(xarray[package_id][xtype][''][''][xval], xqte);
  }
  return price;
}

function get_std_price_with_qte_only2(xarray, package_id, xtype, xcateg, xsubcateg, xqte) {

  if (xarray[package_id][xtype] && xarray[package_id][xtype][xcateg] && xarray[package_id][xtype][xcateg][xsubcateg] )
  {
	xdata=xarray[package_id][xtype][xcateg][xsubcateg];
  }
  else if (xarray[package_id][xtype] && xarray[package_id][xtype][xcateg] && xarray[package_id][xtype][xcateg][''])
  {
	xdata=xarray[package_id][xtype][xcateg][''];
  }
  else if (xarray[package_id][xtype] && xarray[package_id][xtype][''] && xarray[package_id][xtype][''][''] )
  {
	xdata=xarray[package_id][xtype][''][''];
  } else {
     // NOT FOUND !!
	 return new Array(-1,0);
  }


  for (var i in xdata) {
	qte_min=xdata[i]['qte_start'];
    qte_max=xdata[i]['qte_end'];
    type_qte=xdata[i]['type_qte'];
	price=xdata[i]['price'];

	if (qte_min<=xqte && qte_max>=xqte)
	{
	  if (type_qte=='FIX')
	  {
	    return new Array(price,i);
	  } else if (type_qte=='CALC')
	  {
	    return new Array(price*xqte,i);
	  }
	}
  }
  return new Array(-1,0);
}


/////////// pour l'admin fin

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function swapDivClass(d1, d2){
	document.getElementById(d1).className = 'invisible';
	document.getElementById(d2).className = 'visible';
}

function fav_close(){
	try{
		opener.location.reload();
		opener.focus();
	}catch(e){

	};
	self.close();
}

function prevfav(box){
	var totalFavs = bigFavs.length;
	if(totalFavs > 5 && bigFavPos!=0){
		bigFavPos = eval(bigFavPos)-1;
		var hidePos = eval(bigFavPos)+5;
		if(hidePos!=bigFavs.length){
			document.getElementById(bigFavs[hidePos]).className='invisible';
			document.getElementById(favs_containers[hidePos]).style.display='none';
			document.getElementById(favs_containers[bigFavPos]).style.display='block';
			document.getElementById(bigFavs[bigFavPos]).className='visible';
		}
	}
	else if (totalFavs <= 5){
		// bigFavPos=0;
	}
}

function nextfav(box){
	var totalFavs = bigFavs.length;
	if(totalFavs > 5 && bigFavPos+5<eval(bigFavs.length)){
		var showPos = eval(bigFavPos)+5;
		document.getElementById(favs_containers[bigFavPos]).style.display='none';
		document.getElementById(bigFavs[bigFavPos]).className='invisible';
		document.getElementById(bigFavs[showPos]).className='visible';
		document.getElementById(favs_containers[showPos]).style.display='block';
		bigFavPos = eval(bigFavPos)+1;
	}
}

function delfavorite(){
	document.frmfavoris.uident.value=delfavorite.arguments[0];
	document.frmfavoris.action='/cgi-bin/favoris/supprimer.cgi';
	document.frmfavoris.submit();
}

function checkEmailSyntax(zemail) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(zemail)){
    return true;
  }
  return false;
}


/*******************************************************************************
 * Fonction qui valide un ou plusieurs courriels séparés par un caractère donnée
 *
 * Note : les espaces avant et après le courriel sont valides
 ******************************************************************************/
function checkMultipleEmailSyntax(zemail, separator)
{
	var email = zemail.split(separator);

	for(var i in email)
	{
		if (!(/^\s*\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+\s*$/.test(email[i])))
		{
			return false;
		}
	}

	return true;
}

var active_field = null;

function change_field_keydown(id_field_from) {
	var field = document.getElementById(id_field_from);
	active_field = field;
	field.lastValue = field.value;
}

function change_field_keyup(id_field_from, id_field_to, max_length) {
	var field = document.getElementById(id_field_from);
	var target_field = document.getElementById(id_field_to);
	if (field == active_field && field.value != field.lastValue && field.value.length >= max_length){
		target_field.focus();
		active_field = null;
	}
}

// Changement la chaine de caractère pour que la première lettre de chaque
// phrase soit en majuscule.
function upperCaseSentence(str) {
	return str.toLowerCase().replace(/(^\s*\w|[\.\!\?]\s*\w)/g,function(c){return c.toUpperCase()});
}

// Remplace la selection par le résultat d'une fonction pour les textbox et textarea
// ex: replaceSelectionFct(function(s){s.toLowerCase();});
// Fonctionne avec IE4+ seulement car avec FF on ne peut pas avoir le node selectionné d'un INPUT
function replaceSelectionFct(fct) {

	var SelectedString;

	if (document.selection && document.selection.createRange) {
		// IE4+
		SelectedString = document.selection.createRange().text;
		var el = document.selection.createRange().parentElement();
	} else {
		alert("Les outils fonctionnent uniquement avec Internet Explorer 4 et plus.");
		exit();
	}

	if (typeof fct === 'function') {
	  SelectedString = fct(SelectedString);
	}

	//assign the replace string value to the selected string
	if((el.tagName == 'INPUT' || el.tagName == 'TEXTAREA') && (el.type == 'text' || el.type == 'textarea') && !el.disabled) {
		document.selection.createRange().text = SelectedString;
	}
}
