function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    if ( ver >= 8.0 ) 
      msg = "You're using a recent copy of Internet Explorer."
    else
      msg = "You should upgrade your copy of Internet Explorer.";
  }
}

function $RG(id) {
  id = $(id);
  var ret = new Object();

  var groupName = id.name;
  var form = id.form;

  ret.radios = form.getInputs('radio', groupName);

  ret.getValue = function() {
    var elt = this.radios.find(function(re) {return re.checked;});
    return elt ? $F(elt) : null;
  };

  ret.setValue = function(value) {
    var elt = this.radios.find(function(re) {return re.value == value});
    if(elt) elt.checked = true;
  }

  return ret;
}

function copyToClipboard(content)
{
    swf = '/images/_clipboard.swf';
    if (window.clipboardData) {
      window.clipboardData.setData("Text", element.getValue());
    } else {
      if (!$('flash_clipboard_container')) {
        $(document.body).insert(new Element('div', {id: 'flash_clipboard_container'}));
      }
      $('flash_clipboard_container').update(
        new Element('embed', {
	  width: 0,
          height: 0,
          flashvars: 'clipboard='+ content,
          quality: 'high',
          name: 'copy_contents',
          id: 'copy_contents',
          src: swf,
          type: 'application/x-shockwave-flash'
	})
      );
    }
}

function trim2(myString)
{
  return myString.replace(/^\s+/g,'').replace(/\s+$/g,'')
}

function init_multiple_select() {
  var selected = new Array();
  var list = $$('select');
  if (!list.length) {
    return false;
  }
  // On parcours tout les elements select
  for (j = 0; j < list.length; j++) {
    if (list[j].multiple == true) {
      n = list[j].readAttribute('name');
      selected[n] = new Array();
      selected[n]["count"] = 0;
      // On parcours tout les elements option du select
      for (var i = 0, a = 0; i < list[j].options.length; i++) {
        selected[n][a] = new Array();
        selected[n][a]["value"] = list[j].options[i].value;
        selected[n][a]["ref"] = list[j].options[i];
        if (list[j].options[i].selected == true) {
          selected[n][a]["selected"] = true;
          selected[n]["count"]++;
          list[j].options[i].addClassName('selected');
        } else {
          selected[n][a]["selected"] = false;
        }
        a++;
        // On greffe un event manager sur l'option
        Event.observe(list[j].options[i], 'click', function () {
          var n = this.up('select').readAttribute('name');
          var max = this.up('select').readAttribute('maxoptions');
          var c = false;
          for (var i = 0; i < selected[n].length; i++) {
            if (selected[n][i]["value"] == this.value) {
              c = selected[n][i];
            } else {
              if (selected[n][i]["selected"] == true) {
                selected[n][i]["ref"].selected = true;
              } else {
                selected[n][i]["ref"].selected = false;
              }
            }
          }
          if (c) {
            if (c["selected"] == true) {
              c["selected"] = false;
              this.selected = false;
              selected[n]["count"]--;
              this.removeClassName('selected');
            } else {
              if (selected[n]["count"] >= max) {
                c["selected"] = false;
                this.selected = false;
              } else {
                c["selected"] = true;
                this.selected = true;
                this.focus();
                selected[n]["count"]++;
                this.addClassName('selected');
              }
            }
          }
        }, false);
      }
    }
  }
}

function checkPack()
{
  if ($('pack_edifree_field').value == '0') {
    $('packlist').scrollTo();
    Effect.Pulsate($('packlist'), {delay: 0.2, duration : 2, pulses : 3});
    Effect.Appear($('packlist'), {delay : 2.2})
    return false;
  }
  return true;
}

function publierLogin()
{
  $('ajax_login_error').update('')
  $('ajax_login_error').hide();
  var email = $('publier_login_email').value;
  var password = $('publier_login_password').value;
  if (email && password) {
    var url = "/login_ajax";
    var pars = "email=" + escape(encodeURIComponent(email)) + "&password=" + escape(encodeURIComponent(password));
    new Ajax.Request(url, {
      method: 'post',
      parameters: pars,
      onSuccess: function(transport) {
      if (transport.responseText != '') {
        $('login_top').update(transport.responseText);
        Effect.Appear($('login_top'), { duration: 0.5 });
        if ($('auth_box')) {
          Effect.BlindUp($('auth_box'), { duration: 0.5 });
        }
        $('im_message').select('p.message')[0].update('Identification réussie. \
            Vous pouvez désormais envoyer votre ouvrage.');
            loadInstantMessage();
            $('im_message').scrollTo();
      } else {
        $('ajax_login_error').update('Echec de l\'identification. Vérifiez \
            que vous avez correctement saisi vos identifiants.');
            $('ajax_login_error').show();
      }
    }
    });
  }
  return false;  
}

function updateBooklistView(type)
{
  if (type == '1')
  {
    $('view_1').setStyle({backgroundPosition: '0px -17px'});
    $('view_2').setStyle({backgroundPosition: '0px 0px'});
    if ((v = $('library_container')))
    {
      v.removeClassName('view_2');
      v.addClassName('view_1');
    }
  }
  else
  {
    $('view_1').setStyle({backgroundPosition: '0px 0px'});
    $('view_2').setStyle({backgroundPosition: '0px -17px'});
    if ((v = $('library_container')))
    {
      v.removeClassName('view_1');
      v.addClassName('view_2');
    }
  }
  var url = '/ajax/view/' + type;
  new Ajax.Request(url, {
    method: 'get',
    onSuccess: function(transport) {
  }
  });
  return false;
}

var im_timer = null;
var imp_timer = null;

function close_im()
{
  Effect.SlideUp('im_message', { duration: 0.5 })
  document.body.style.paddingTop = "0px";
  if (im_timer)
  {
    clearTimeout(im_timer);
  }
}

function im_pulsate() {
  imp_timer = setTimeout(function() { 
    new Effect.Pulsate('im_message', { pulses: 1, duration: 1, delay: 0.5 });
    im_pulsate();
  }, "10000");
}


function loadInstantMessage()
{
  if ($('im_message')) {
    var msg = $('im_message').select('p.message')[0].innerHTML;
    if (msg != '') {
      document.body.style.paddingTop = "0px";
      new Effect.SlideDown('im_message', { duration: 0.5 });
      new Effect.Pulsate('im_message', { pulses: 1, duration: 1, delay: 1.0 });
      im_timer = setTimeout(close_im, "10000");
      Event.observe($('im_close'), 'click', close_im, false);
    }
  }
}

function loadDynView()
{
  if ($('view_1') && $('view_2')) {
    Event.observe($('view_1'), 'click', function() { updateBooklistView('1'); return false; }, false);
    Event.observe($('view_2'), 'click', function() { updateBooklistView('2'); return false; }, false);
    $('view_1').removeAttribute("href");
    $('view_2').removeAttribute("href");
  }
}

function makeDynFilter(el)
{
  link = $(el).readAttribute('href');
  param = link.substring(1, link.length);
  var reg = new RegExp("^(add|remove|switch)_([a-zA-Z0-9_]+)=([0-9]+)", "g");
  var p = reg.exec(param);
  $(el).removeAttribute("href");
  if (p && p[1] && p[2] && p[3])
  {
    $(el).writeAttribute('ajax-action', p[1]);
    $(el).writeAttribute('ajax-param', p[2]);
    $(el).writeAttribute('ajax-value', p[3]);
    Event.observe($(el), 'click', function(event) {
      var el = Event.element(event);
      updateLibrary(event);
      updateFilterChild(el);
      updateFilterParent(el);
    }, false);
  }
}

function getElementParam(el, child)
{
  var action = el.readAttribute('ajax-action');
  var param = el.readAttribute('ajax-param');
  var value = el.readAttribute('ajax-value');
  if (el.hasClassName('selected'))
  {
    var type = 'remove';
    el.removeClassName('selected');
  }
  else if (!child)
  {
    var type = 'add';
    el.addClassName('selected');
  }
  else if (!el.hasClassName('parent'))
  {
    var type = 'add';
  }
  if (!type)
  {
    return false;
  }
  if (action == 'switch')
  {
    type = 'switch';
  }
  var params = type + '_' + param + '[]=' + value;
  return params;
}

function updateLibrary(event)
{
  $('library').update('<div class="spinner"><p>Chargement</p><img src="/images/edifree2/blue/loader_blue.gif" /></div>');
  var el = Event.element(event);
  var params = '?';
  params = params + getElementParam(el, false);
  c = el.nextSiblings();
  if (c && c[0])
  {
    list = c[0].select('a.selected');
    for (i = 0; i < list.length; i++)
    {
      params = params + '&' + getElementParam(list[i], true);
    }
  }

  /* update de tout les elements parents */
  dd = el.up('li');
  if (dd && dd.up('.level') && (a = dd.up('.level').down()))
  {
    if ((param = getElementParam(a, true)))
    {
      params = params + '&' + param;
    }
    a.addClassName('parent');
  }
  var url = '/ajaxdoc';
  new Ajax.Updater('library', url, {
    method: 'post',
    parameters: params,
    evalScripts : true
  });
}

function updateFilterParent(el)
{
  var found = false;
  li = el.up('li.level');
  if (li)
  {
    s = li.siblings();
    for (i = 0; i < s.length; i++)
    {
      if (s[i].down().hasClassName('selected') || s[i].down().hasClassName('parent'))
      {
        found = true;
      }
    }
    if (!found && !el.hasClassName('selected')) {
      li.up('.level').select('a')[0].removeClassName('parent');
      li.up('.level').select('a')[0].addClassName('selected');
    }
  }
}

function updateFilterChild(el)
{
  c = $(el).up();
  if (c)
  {
    list = c.select('li a.selected');
    for (i = 0; i < list.length; i++)
    {
      list[i].removeClassName('selected');
      list[i].removeClassName('parent');
    }
    u = c.select('ul');
    if (u)
    {
      for (i = 0; i < u.length; i++)
      {
        if ($(el).hasClassName('selected'))
        {
          if (!u[i].visible())
          {
            Effect.BlindDown(u[i], { duration: 0.3 });
            break;
          }
        }
        else
        {
          $(el).removeClassName('parent');
          Effect.BlindUp(u[i], { duration: 0.3 });
        }
      }
    }
  }
}

function closeChildFilters(list)
{
  var found = false;
  for (i = 0; list[i]; i++)
  {
    if (!list[i].hasClassName('selected'))
    {
      if ((f = list[i].nextSiblings()) && f[0])
      {
        under = f[0].select('.selected');
        if (!(under && under[0]))
        {
          f[0].hide();
          found = true;
        }
      }
    }
  }
  return found;
}

function loadAjaxFilters()
{
  list = $$('dl.lib_filter_public dd a, dl.lib_filter_etude dd a, dl.lib_filter_langue dd a, dl.lib_filter_pays dd a');
  for (i = 0; list[i]; i++)
  {
    makeDynFilter(list[i]);
  }

  list = $$('dl.lib_filter_genre dd a');
  for (i = 0; list[i]; i++)
  {
    makeDynFilter(list[i]);
  }
  list = $$('dl.lib_filter_genre dd a, dl.lib_filter_genre li a');
  closeChildFilters(list);

  list = $$('dl.lib_filter_theme dd, dl.lib_filter_theme li');
  for (i = 0; list[i]; i++)
  {
    if ((a = list[i].select('a')) && a[0])
    {
      makeDynFilter(a[0]);
    }
  }
  list = $$('dl.lib_filter_theme dd a, dl.lib_filter_theme li a');
  closeChildFilters(list);
  list = $$('.library_filters a.toggle');
  if (list.length > 0) {
    for (i = 0; i < list.length; i++)
    {
      list[i].removeAttribute("href");
      Event.observe(list[i], 'click', toggleFilterBox);
    }
    for (j = 0; j < list.length; j++)
    {
      d = list[j].up('dl').select('dd');
      list[j].addClassName('hide');
      for (i = 0; i < d.length; i++)
      {
        d[i].hide();
      }
    }
  }
}

function toggleFilterBox(event)
{
  var el = Event.element(event);
  toggleFilterBoxEl(el);
}

function toggleFilterBoxEl(el)
{
  d = el.up('dl').select('dd');
  if (d)
  {
    if (el.hasClassName('hide'))
    {
      el.removeClassName('hide');
      for (i = 0; i < d.length; i++)
      {
        d[i].show();
      }
    }
    else
    {
      el.addClassName('hide');
      for (i = 0; i < d.length; i++)
      {
        d[i].hide();
      }
    }
  }
}

// Charge les tips de la librairie - librairie
function loadBookTips()
{
  var list = $$('.bookTip');
  if (!list && list.length)
  {
    return false;
  }
  for (i = 0; i < list.length; i++)
  {
    el_id = $(list[i]).select(".wrapper .couv a img");
    if (el_id && el_id[0])
    {
      id_doc = el_id[0].readAttribute('alt');
      name = $(list[i]).select(".wrapper .infos .layer h3.title a")[0].innerHTML;
      el_descr = $(list[i]).select(".descr .layer");
      if (el_descr && el_descr[0])
      {
        descr = el_descr[0].innerHTML;
      }
      else
      {
        descr = '';
      }
      new Tip('couv' + id_doc, '<img src="/couv/' + id_doc + '/1" align="left" \
          style="padding: 5px;" alt="' + name + '" /><div style="text-align: justify; \
            padding: 10px;">' + descr + '</div>', { title: '<span style="font-size: 1.25em; color: #333;">'+name+'</span>', width: '400px'}
      );
    }
  }
}

// Met a jour le champs mep image (etape 3) - publier
function update_mep_image()
{
  var mep = $('mep_image');
  var mep_nb = $('mep_image_nb').down('input');
  if (mep.checked) {
    mep_nb.disabled = false;
  } else {
    mep_nb.disabled = true;
  }
}

// Met a jour le prix des mep images (etape 3) - publier
function update_mep_image_price()
{
  var image_nb = $('mep_image_nb').down('input');
  price = parseFloat($F(image_nb)) * parseFloat(extractPrice($('service_mep_image').down('.priceRatio').innerHTML.replace(',', '.')));
  $('doc_mep_image_preview_price').update(price.toFixed(2));
}

// Met a jour le champs relecture (etape 3) - publier
function update_relecture()
{
  var relec = $('doc_relec');
  var relec_nb = $('doc_relec_nb').down('input');
  if (relec.checked) {
    relec_nb.disabled = false;
  } else {
    relec_nb.disabled = true;
  }
}

// Calcul le prix de la relecture (etape 3) - publier
function update_relecture_price()
{
  var relec_nb = $('doc_relec_nb').down('input');
  price = parseFloat(extractPrice($('service_relecture').down('.priceForfait').innerHTML));
  price += parseFloat($F(relec_nb)) * parseFloat(extractPrice($('service_relecture').down('.priceRatio').innerHTML.replace(',', '.')));
  if (!price) {
    price = 0.0;
  }
  $('doc_relec_preview_price').update(price.toFixed(2));
}

// Extrait le prix d'une chaine avec sa devise
function extractPrice(price)
{
  myRe = new RegExp("([0-9]+([\.,][0-9]+)?)", "g");
  myArray = myRe.exec(price);
  if (myArray && myArray.length > 0) {
    return myArray[0];
  }
  return price;
}

// Met a jour le prix total dynamiquement (etape 3) - publier
function update_total_price(pack) {
  var prom = false;
  if ($('prom_mp')) {
    prom = true;
  }
  var price = 0.0;
  if (pack == 'print') {
    price += parseFloat($('packPrintPrice').innerHTML);
  }
  if (pack == 'diffusion') {
    price += parseFloat($('packDiffusionPrice').innerHTML);
  }
  if (pack == 'totality') {
    price += parseFloat($('packTotalityPrice').innerHTML);
  }
  if (pack == 'print' || (pack == 'diffusion' && !prom)) {
    if ($('service_couv_perso').down('input').checked) {
      price += parseFloat(extractPrice($('service_couv_perso').down('.priceValue').innerHTML));
    }
  }
  if (pack == 'print') {
    if ($('service_bnf').down('input').checked) {
      price += parseFloat(extractPrice($('service_bnf').down('.priceValue').innerHTML));
    }
    if (!prom) {
      if ($('service_mep').down('input').checked) {
        price += parseFloat(extractPrice($('service_mep').down('.priceValue').innerHTML));
      }
    }
    if ($('service_partners') && $('service_partners').down('input').checked) {
      price += parseFloat(extractPrice($('service_partners').down('.priceValue').innerHTML));
    }
  } 
  if ($('service_mep_image').down('.field input').checked) {
    var nb_image = parseInt($F($('service_mep_image').down('.description input')));
    if (nb_image) {
      price += (parseFloat(extractPrice($('service_mep_image').down('.priceRatio').innerHTML)) * nb_image);
    }
  }
  if ($('service_couv_crea').down('input').checked) {
    price += parseFloat(extractPrice($('service_couv_crea').down('.priceValue').innerHTML));
  }
  if ($('service_relecture').down('input').checked) {
    var nb_page = parseInt($F($('service_relecture').down('.description input')));
    if (nb_page) {
      price += parseFloat(extractPrice($('service_relecture').down('.priceForfait').innerHTML));
      price += parseFloat(extractPrice($('service_relecture').down('.priceRatio').innerHTML.replace(',', '.')) * nb_page);
    }
  }
  $('services_total_TTC').update(price.toFixed(2));
  if (price.toFixed(2) > 0) {
    $('services_total_TTC').removeClassName('empty');
  } else {
    $('services_total_TTC').addClassName('empty');
  }
}

// Met a jour les services (etape 3) - publier
function update_services()
{
  var prom = false;
  if ($('doc_prom') && $('doc_prom').getValue()) {
    prom = true;
  }
  var pack = false;
  var form = $('form_pack_services');
  if (form) {
    var input = form['doc_pack'];
    if (input) {
      for (i = 0; i < input.length; i++) {
        if (input[i].checked) {
          pack = $F(input[i]);
        }
      }
    }
  }
  if (pack == 'print') {
    $('service_bnf').show();
    if (!prom) {
      $('service_mep').show();
    } else {
      $('service_mep').hide();
    }
    $('service_mep_image').show();
    if ($('service_partners')) $('service_partners').show();
    $('service_couv_perso').show();
    $('service_couv_crea').show();
    $('service_relecture').show();
  }
  if (pack == 'diffusion') {
    $('service_bnf').hide();
    $('service_mep').hide();
    $('service_mep_image').show();
    if ($('service_partners')) $('service_partners').show();
    if (!prom) {
      $('service_couv_perso').hide();
    } else {
      $('service_couv_perso').hide();
    }
    $('service_couv_crea').show();
    $('service_relecture').show();
  }
  if (pack == 'totality') {
    $('service_bnf').hide();
    $('service_mep').hide();
    $('service_mep_image').show();
    if ($('service_partners')) $('service_partners').hide();
    $('service_couv_perso').hide();
    $('service_couv_crea').show();
    $('service_relecture').show();
  }
  update_total_price(pack);
}

// Met a jour le surlignage des services selectionnes
function update_services_hl()
{
  $$('.serviceList dd li.field input').each(function(el) {
    Event.observe(el, 'click', function(event) {
      var el = Event.element(event);
      if (el.checked) {
        el.up('dd').addClassName('selected');
      } else {
        el.up('dd').removeClassName('selected');
      }
    });
    if (el.checked) {
      el.up('dd').addClassName('selected');
    } else {
      el.up('dd').removeClassName('selected');
    }
  });
}

// Met a jour l'affichage des packs
function update_packs()
{
  $$('.pack').each(function (el) {
    el.removeClassName('selected_pack');
  });
  var form = $('form_pack_services');
  var input = form['doc_pack'];
  if (input) {
    for (i = 0; i < input.length; i++) {
      if (input[i].up().down('input').checked) {
        input[i].up('.pack').addClassName('selected_pack');
      } else {
        input[i].up('.pack').removeClassName('selected_pack');
      }
    }
  }
}

// Charge le script pour l'etape 3 de la publication - publier
function loadStep3() {
  update_mep_image();
  Event.observe($('mep_image'), 'click', function(event) {
    update_mep_image();
  });
  update_mep_image_price();
  Event.observe($('mep_image_nb').down('input'), 'keyup', function(event) {
    update_mep_image_price();
  });

  update_relecture();
  Event.observe($('doc_relec'), 'click', function(event) {
    update_relecture();
  });
  update_relecture_price();
  Event.observe($('doc_relec_nb').down('input'), 'keyup', function(event) {
    update_relecture_price();
  });

  var form = $('form_pack_services');
  if (form) {
    new PeriodicalExecuter(function(pe) {
      form.select('.pack .selection').each(function(el) {
       Event.observe(el, 'click', function(event) {
        update_packs();
        update_services();
       }, false);
      });
      pe.stop();
    }, 1);
  }
  var list = $$('.fieldList .field input, .fieldList .description input');
  for (i = 0; i < list.length; i++) {
    if ($(list[i]).readAttribute('type') == 'checkbox') {
      Event.observe(list[i], 'click', function() {
        update_services();
      }, false);
    }
    if ($(list[i]).readAttribute('type') == 'text') {
      Event.observe(list[i], 'keyup', function() {
        update_services();
      }, false);
    }
  }
  update_packs();
  update_services();
  update_services_hl();
}

// Charge les fonctions de la procedure de publication - publier
function loadPublish() {
  if ($('pe_web') && !$('pe_web').hasClassName('noToggle')) {
    $('pe_web').removeAttribute("href");
    Event.observe($('pe_web'), 'click', function() {
      toggle_pe($('pe_web'), 'web'); 
      return false;
    });
  }
  if ($('pe_print') && !$('pe_print').hasClassName('noToggle')) {
    $('pe_print').removeAttribute("href");
    Event.observe($('pe_print'), 'click', function() {
      toggle_pe($('pe_print'), 'print'); 
      return false;
    });
  }
  if ($('pe_diffusion') && !$('pe_diffusion').hasClassName('noToggle')) {
    $('pe_diffusion').removeAttribute("href");
    Event.observe($('pe_diffusion'), 'click', function() {
      toggle_pe($('pe_diffusion'), 'diffusion'); 
      return false;
    });
  }
  if ($('pe_totality') && !$('pe_totality').hasClassName('noToggle')) {
    $('pe_totality').removeAttribute("href");
    Event.observe($('pe_totality'), 'click', function() {
      toggle_pe($('pe_totality'), 'totality'); 
      return false;
    });
  }
  if ($('publish_step_3')) {
    loadStep3();
  }
}

// Met a jour le champs pages couleur selon la selection - devis
function update_devis_color()
{
  color = $('devis_color').value;
  if (color == 'nb_color') {
    $$('.devis_pages_color')[0].show();
  } else {
    $$('.devis_pages_color')[0].hide();
  }
  update_devis_ajax();
}

// Calcul le coup de fabrication d'un ouvrage - devis
function get_factory_price(ex)
{
  var format = $('devis_format').value;
  var color = $('devis_color').value;
  var pages = parseInt($('devis_pages').value);
  var pages_color = 0.0;
  if ($('devis_color').value == 'nb_color') {
    pages_color = parseInt($('devis_pages_color').value);
  }
  if (!pages_color) {
    pages_color = 0.0;
  }
  var price = 4.40;
  if (pages > 0) {
    if (format == '110_180' || format == '134_204' || format == '148_210') {
      if (color == 'nb_color') {
        m = 0.032;
      } else if (color == 'color') {
        m = 0.124;
      } else {
        m = 0.024;
      }
    } else {
      if (color == 'nb_color') {
        m = 0.065;
      } else if (color == 'color') {
        m = 0.248;
      } else {
        m = 0.048;
      }
    }
    price += (pages - pages_color) * m;
    if (color == 'nb_color' && pages_color > 0) {
      price += pages_color * 0.124;
    }
  }
  if (pages && pages_color && pages < pages_color) {
    price = 0.0;
    alert('Le nombre de pages couleur doit etre inferieur au nombre de page total');
    $('devis_pages_color').value = '0';
  }
  return price;
}

// Fonction d'update des champs (disable/enable) - devis
function update_devis_fields(type, target)
{
  if (target == 'basic') {
    var list = $$('.devis_basic .total');
  } else if (target == 'fix') {
    var list = $$('.devis_fix .total');
  } else if (target == 'download') {
    var list = $$('.devis_fix_download .total');
  } else {
    var list = $$('.devis .total');
  }
  for (i = 0; i < list.length; i++) {
    if (!list[i].hasClassName('nodisable')) {
      if (type == 'disable') {
        list[i].addClassName('disabled');
      } else {
        list[i].removeClassName('disabled');
      }
    }
  }
  if (target != 'download' && target != 'fix') {
    if ($('devis_fix_price_sell_TTC')) {
      if (type == 'disable') {
        $('devis_fix_price_sell_TTC').value = '0.00';
        $('devis_fix_price_sell_TTC').disabled = true;
      } else {
        $('devis_fix_price_sell_TTC').disabled = false;
      }
    }
  }
}

// Fonction d'update du devis (basique) - devis
function update_devis_price(){
  var ex = parseInt($('devis_ex').value);
  ex = (ex >= 1) ? ex : 1;
  var price = get_factory_price(ex);
  var priceSell = price;
  price = price * ex;
  // <Firone>
  if ($('current_country')) {
    var tva_rate = get_tva_value('books', $('current_country').getValue());
  } else {
    var tva_rate = get_tva_value('books', $('htmlOptionsPays').getValue());
  }
  priceTTC = roundSnap(price * ++tva_rate);
  // priceTTC = roundSnap(price * 1.055);
  // </Firone>
  var priceTotal = priceTTC;
  /* Update prix total HT et TTC */
  var pages = parseInt($('devis_pages').value);
  if (pages >= 1 && pages <= 500) {
    update_devis_fields('enable');
    $('devis_price').update(price.toFixed(2));
    $('devis_price_TTC').update(priceTTC.toFixed(2));
    update_devis_price_fix($('devis_default_price') ? 0 : 1);
  } else {
    $('devis_price').update('-');
    $('devis_price_TTC').update('-');
    update_devis_fields('disable');
    if (pages > 500) {
      alert('Votre fichier ne peut depasser 500 pages A4. Vous devez le publier en deux tomes');
      $('devis_pages').value = '';
    }
  }
}

// <Firone>
// Fonction d'update de la fixation du prix - devis
// function update_devis_price_fix(erase) {
// if ($('devis_fix_price_HT')) {
// priceSell = get_factory_price(1);
// $('devis_fix_price_HT').update(priceSell.toFixed(2));
// var mini_priceSellTTC = (priceSell / 0.695);
// var user_priceSellTTC = parseFloat($('devis_fix_price_sell_TTC').getValue());
// if (!user_priceSellTTC) {
// user_priceSellTTC = 0;
// }
// $('devis_fix_mini_price_sell_TTC').update(mini_priceSellTTC.toFixed(2));
// if (user_priceSellTTC < mini_priceSellTTC.toFixed(2) && !erase) {
// var priceSellTTC = mini_priceSellTTC;
// $('devis_fix_frais').update('0.00');
// $('devis_fix_tva').update('0.00');
// $('devis_fix_marge').update('0.00');
// $('devis_fix_com_partners').update('0.00');
// $('devis_fix_marge_partners').update('0.00');
// update_devis_fields('disable', 'fix');
// } else {
// update_devis_fields('enable', 'fix');
// if (erase) {
// var priceSellTTC = mini_priceSellTTC;
// $('devis_fix_price_sell_TTC').value = priceSellTTC.toFixed(2);
// } else {
// var priceSellTTC = user_priceSellTTC;
// }
// var frais = priceSellTTC * 0.1;
// var tva = priceSellTTC * 0.055;
// var marge = priceSellTTC - frais - tva - priceSell;
// var com_partners = priceSellTTC * 0.15;
// var marge = priceSellTTC - priceSell - frais - tva;
// if (marge < 0) {
// marge = 0.0;
// }
// var marge_partners = marge - com_partners;
// if (marge_partners < 0) {
// marge_partners = 0.0;
// }
// priceSellTTC = roundSnap(priceSellTTC);
//
// $('devis_fix_frais').update(frais.toFixed(2));
// $('devis_fix_tva').update(tva.toFixed(2));
// $('devis_fix_marge').update(marge.toFixed(2));
// $('devis_fix_com_partners').update(com_partners.toFixed(2));
// $('devis_fix_marge_partners').update(marge_partners.toFixed(2));
// }
// }
// }
 
// Fonction d'update de la fixation du prix - devis
function update_devis_price_fix(erase) {

  var priceMini = $('devis_fix_mini_price_sell_TTC').innerHTML;
  priceMini = parseFloat(priceMini);
  var priceUser = $('devis_fix_price_sell_TTC').getValue();
  priceUser = parseFloat(priceUser);
  if( (!priceUser || priceMini > priceUser) && priceMini != 0 ) {
    update_devis_fields('disable', 'fix');
  } else {
    update_devis_fields('enable', 'fix');
  }

  if ($('devis_fix_price_HT')) {
    // On récupère la valeur de la tva
    if ($('current_country')) {
      var TVA_books = get_tva_value('books', $('current_country').getValue());
    } else {
      var TVA_books = get_tva_value('books', '*');
    }
    // On récupère les prix d'impression
    var pricePrintHT = get_factory_price(1);
    var pricePrintTTC = pricePrintHT + (pricePrintHT * TVA_books);
    // On calcule le prix de vente minimum
    // En prenant la tva maximum tous pays confondus
    var TVA_books_maxi = get_tva_value('books', '*');
    // En prenant la tva du pays en question
    var TVA_books_maxi = TVA_books;
    var pricePrintTTCMaxi = pricePrintHT + (pricePrintHT * TVA_books_maxi);
    var priceSellTTCMin = pricePrintTTCMaxi / (1 - 0.10 - 0.15);
    // On récupère le prix de vente TTC et on le remonte si il est trop
    // bas
    var priceSellTTC = parseFloat($('devis_fix_price_sell_TTC').getValue());
    if (priceSellTTC < priceSellTTCMin) {
      priceSellTTC = priceSellTTCMin;
    }
    // On calcule les frais de gestion
    var priceGestionTTC = priceSellTTC * 0.10;
    // On calcul les frais de TVA
    var priceTVA = TVA_books * priceSellTTC;
    // On calcul les frais de partenaires
    var pricePartnersTTC = priceSellTTC * 0.15;
    // On calcul la marge auteur sur les ventes edifree
    var priceMargeAuteurEdifree = (priceSellTTC - pricePrintTTC - priceGestionTTC)
    / (1 + TVA_books);
    priceMargeAuteurEdifree = priceMargeAuteurEdifree;
    // On calcul la marge auteur sur les ventes partenaires
    var priceMargeAuteurPartners = (priceSellTTC - pricePrintTTC
        - priceGestionTTC - pricePartnersTTC)
        / (1 + TVA_books);
    priceMargeAuteurPartners = priceMargeAuteurPartners;
    if (priceMargeAuteurPartners < 0)
      priceMargeAuteurPartners = 0;

    // On affiche les résultats
    $$('.tva_books_value').each( function(el) {
      el.update((TVA_books * 100).toFixed(2));
    });

    $('devis_price').update(pricePrintHT.toFixed(2));
    $('devis_price_TTC').update(pricePrintTTC.toFixed(2));
    $('devis_fix_mini_price_sell_TTC').update(priceSellTTCMin.toFixed(2));
    // $('devis_fix_price_sell_TTC').setValue(priceSellTTC.toFixed(2));
    $('devis_fix_frais').update(priceGestionTTC.toFixed(2));
    $('devis_fix_tva').update(priceTVA.toFixed(2));
    $('devis_fix_com_partners').update(pricePartnersTTC.toFixed(2));
    $('devis_fix_marge').update(priceMargeAuteurEdifree.toFixed(2));
    $('devis_fix_marge_partners').update(priceMargeAuteurPartners.toFixed(2));

    // Cas spéciaux d'affichages
    if ($('devis_ex')) {
      devisNb = parseFloat($('devis_ex').getValue());
      $('devis_price').update((devisNb * pricePrintHT).toFixed(2));
      $('devis_price_TTC').update((devisNb * pricePrintTTC).toFixed(2));
    }
    if ($('devis_fix_price_HT')) {
      $('devis_fix_price_HT').update((pricePrintTTC).toFixed(2));
    }


  }
}
// </Firone>
function updateTotalPriceAuthor(value) {
  $('devis_fix_marge').update(value.toFixed(2));
  update_devis_ajax();
}

// Arrondi un float a l'unite
function roundSnap(value) {
  if (value > 0) {
    return (parseFloat(value.toFixed(1) + '0'));
  }
  return value;
}

function price_round(price)
{
  if (price > 0.0) {
    price *= 10;
    price = Math.ceil(price);
    price /= 10;
  }
  return price;
}

function update_devis_ajax(init)
{
  // Url to get prices
  var url = '/ajax/deposer/get_prices?color=' + $('devis_color').getValue();
  // Creating args
  if ($('devis_fix_price_sell_TTC')) {
    url += '&sell_price_book=' + $('devis_fix_price_sell_TTC').getValue();
  }
  if ($('devis_price_download_TTC')) {
    url += '&sell_price_download=' + $('devis_price_download_TTC').getValue();
  }
  if ($('devis_format')) {
    url += '&format=' + $('devis_format').getValue();
  }
  if ($('devis_color')) {
    url += '&color=' + $('devis_color').getValue();
  }
  if ($('devis_pages')) {
    url += '&nbre_pages=' + $('devis_pages').getValue();
  }
  if ($('devis_partners') || ($('service_partners') && $('service_partners').checked)) {
    url += '&partners';
  }
  new Ajax.Request(url, {
    method: 'get',
    onSuccess: function(transport) {
      if (transport.responseText != '') {
	var prices = eval('(' + transport.responseText + ')');
	if (prices.books) {
	  if (init) {
	    if (prices.books.prix_propose_ttc) {
	      $('devis_fix_price_sell_TTC').value = prices.books.prix_propose_ttc;
	    } else {
	      $('devis_fix_price_sell_TTC').value = prices.books.prix_vente_minimum;
	    }
	  }
        }
	var price_print = $('devis_fix_price_sell_TTC').getValue();
        price_print = (price_print > 0) ? parseFloat(price_print) : 0.00;
	if (!price_print || !prices.books || !prices.books.prix_vente_minimum || price_print < prices.books.prix_vente_minimum) {
	    if ($('devis_fix_mini_price_sell_TTC')) {
	      $('devis_fix_mini_price_sell_TTC').addClassName('redColor');
	    }
	    update_devis_fields('disable', 'fix');
	    if ($('devis_fix_frais')) {
	     $('devis_fix_frais').update('-');
	    }
	    if ($('devis_fix_tva')) {
	      $('devis_fix_tva').update('-');
	    }
	    $('devis_fix_marge').update('-');
	    if ($('devis_fix_frais_partners')) {
	      $('devis_fix_frais_partners').update('-');
	    }
	    if ($('devis_fix_tva_partners')) {
	      $('devis_fix_tva_partners').update('-');
	    }
	    if ($('devis_fix_marge_partners')) {
	      $('devis_fix_marge_partners').update('-');
	    }
	    if ($('devis_fix_com_partners')) {
	      $('devis_fix_com_partners').update('-');
	    }
	} else {
	    if ($('devis_fix_mini_price_sell_TTC')) {
	      $('devis_fix_mini_price_sell_TTC').removeClassName('redColor');
	    }
	    update_devis_fields('enable', 'fix');
	    $('devis_fix_frais').update(parseFloat(prices.books.frais_edifree_tva).toFixed(2));
	    if ($('devis_fix_tva')) {
	      $('devis_fix_tva').update(parseFloat(prices.books.frais_tva).toFixed(2));
	    }
	    $('devis_fix_marge').update(parseFloat(prices.books.marge_auteur_edifree).toFixed(2));
	    if ($('devis_fix_frais_partners')) {
	      $('devis_fix_frais_partners').update(parseFloat(prices.books.frais_edifree_tva).toFixed(2));
	    }
	    if ($('devis_fix_tva_partners')) {
	      $('devis_fix_tva_partners').update(parseFloat(prices.books.frais_tva).toFixed(2));
	    }
	    if ($('devis_fix_marge_partners')) {
	      $('devis_fix_marge_partners').update(parseFloat(prices.books.marge_auteur_partenaires).toFixed(2));
	    }
	    if ($('devis_fix_com_partners')) {
	      $('devis_fix_com_partners').update(parseFloat(prices.books.frais_partenaires).toFixed(2));
	    }
	}
	if (prices.books) {
	    if ($('devis_fix_mini_price_sell_TTC')) {
	      $('devis_fix_mini_price_sell_TTC').update(parseFloat(prices.books.prix_vente_minimum).toFixed(2));
	    }
	    if ($('devis_price_TTC')) {
	      $('devis_price_TTC').update(parseFloat(prices.books.prix_fabrication_ttc).toFixed(2));
	    }
	    if ($('devis_price_TTC_2')) {
	      $('devis_price_TTC_2').update(parseFloat(prices.books.prix_fabrication_ttc).toFixed(2));
	    }
	    $('devis_price').update(parseFloat(prices.books.prix_fabrication_ht).toFixed(2));
	    if ($('devis_price_TTC_partners')) {
	      $('devis_price_TTC_partners').update(parseFloat(prices.books.prix_fabrication_ttc).toFixed(2));
	    }
	    if ($('devis_fix_price_HT')) {
	      $('devis_fix_price_HT').update(parseFloat(prices.books.prix_fabrication_ht).toFixed(2));
	    }
	    if ($('devis_fix_price_HT_2')) {
	      $('devis_fix_price_HT_2').update(parseFloat(prices.books.prix_fabrication_ht).toFixed(2));
	    }
	    if ($('devis_fix_price_sell_TTC_partners')) {
	      $('devis_fix_price_sell_TTC_partners').update(price_print.toFixed(2));
	    }
	}
	var price_download = $('devis_price_download_TTC').getValue();
        price_download = (price_download > 0) ? parseFloat(price_download) : 0.00;
	if (!price_download || !prices.ebooks || (price_download < prices.ebooks.prix_vente_minimum_edifree_ttc)) {
	    if ($('devis_price_mini_download_TTC')) {
	      $('devis_price_mini_download_TTC').addClassName('redColor');
	    }
	    update_devis_fields('disable', 'download');
	    if ($('devis_fix_tva_download')) {
	      $('devis_fix_tva_download').update('-');
	    }
	    if ($('devis_fix_marge_download')) {
	      $('devis_fix_marge_download').update('-');
	    }
	} else {
	    if ($('devis_price_mini_download_TTC')) {
	      $('devis_price_mini_download_TTC').removeClassName('redColor');
	    }
	    update_devis_fields('enable', 'download');
	    if ($('devis_fix_tva_download')) {
	      $('devis_fix_tva_download').update(parseFloat(prices.ebooks.frais_tva).toFixed(2));
	    }
	    if ($('devis_fix_frais_download')) {
	      var p = parseFloat(prices.ebooks.frais_tva) + 2.00;
	      $('devis_fix_frais_download').update(p.toFixed(2));
	    }
	    if ($('devis_fix_marge_download')) {
	      $('devis_fix_marge_download').update(parseFloat(prices.ebooks.marge_auteur_edifree).toFixed(2));
	    }
	}
      }
    }
  });
}

var pe = false;

// Fonction d'initialisation du devis
function init_devis()
{ 
  if ($$('.devis').length > 0) {

    if ($('devis_fix_price_sell_TTC')) {
      Event.observe($('devis_fix_price_sell_TTC'), 'keyup', function(event) {
	if (pe != false) {
	  pe.stop();
	}
        pe = new PeriodicalExecuter(function(pe) {
          update_devis_ajax();
          pe.stop();
	  pe = false;
        }, 0.5);
      });
    }

    if ($('devis_price_download_TTC')) {
      Event.observe($('devis_price_download_TTC'), 'keyup', function(event) {
	if (pe != false) {
	  pe.stop();
	}
        pe = new PeriodicalExecuter(function(pe) {
          update_devis_ajax();
          pe.stop();
	  pe = false;
        }, 0.5);
      });
    }

    if ($('slider_devis')) {
      Event.observe($('devis_color'), 'change', function(el) {
        update_devis_ajax();
      });
      Event.observe($('devis_format'), 'change', function(el) {
        update_devis_ajax();
      });
      Event.observe($('devis_pages'), 'keyup', function(el) {
	if (pe != false) {
          pe.stop();
        }
        pe = new PeriodicalExecuter(function(pe) {
          update_devis_ajax();
          pe.stop();
          pe = false;
        }, 0.5);
      });
      update_devis_ajax();
    }
  }
}

// Fonction de validation de CGV (inscription)
function validate_cgv() {
  var f = $('signinForm');
  var cgv = f['cgv'];
  if ($F(cgv)) {
    return true;
  }
  alert('[@Vous devez accepter les conditions générales de vente et la charte Edifree pour vous inscrire]');
  return false;
}

function detail_doc_add_to_cart_callback(el)
{
  if (el.nodeName != 'DIV') {
    el = el.up('div');
  }
  el.stopObserving('click');
  new Effect.Fade(el, {
    duration : 0.5,
    from: 1.0,
    to: 0.1,
    afterFinish: function(effect) {
    effect.element.observe('click', function() { document.location.href = '/panier'; });
    new Effect.Appear(effect.element, {
      duration: 0.5,
      delay: 0.5,
      beforeStart: function(effect) {
      var el = effect.element;
      if (el.readAttribute('id') == 'add_to_cart_download') {
	el.setStyle({ backgroundImage : 'url(/images/edifree2/blue/button_purchased_download.png)' });
      } else {
        el.setStyle({ backgroundImage : 'url(/images/edifree2/blue/button_purchased_print.png)' });
      }
      el.select('span').each(function(item) { item.hide(); });
    }
    });
  }
  });
}

// Fonction d'ajout dans le panier
function add_to_cart(id_doc, type, callback_func, callback_arg)
{
  var url = "/add_to_cart";
  var pars = "id_doc=" + id_doc + "&format=" + type;
  new Ajax.Request(url, {
    method: 'post',
    parameters: pars,
    onSuccess: function(transport) {
    if (transport.responseText != '') {
      $('im_message').select('p.message')[0].update(transport.responseText);
      $('im_message').scrollTo();
      loadInstantMessage();
      $('quick_basket').show();
      $('quick_basket_empty').hide();
      if (callback_func) {
        callback_func(callback_arg);
      }
    }
  }
  });
  return false;
}

function init_doc_navbar()
{
  $$('.doc_navbar .popup_info').each(function(item) {
    var a = item.up(0);
    var title = item.readAttribute('title');
    new Tip(a, item.innerHTML, {
      title: '<b>' + title + '</b>',
      style: 'protogrey',
      stem: 'topLeft',
      border: 4,
      radius: 4,
      hook: { tip: 'topLeft', mouse: true },
      offset: { x: 14, y: 14 }
    });
  });
}

// Selectionne un texte dans un textarea (ou place le curseur a la fin si selStart = selend)
function setSelRange(inputEl, selStart, selend) { 
  if (inputEl.setSelectionRange) { 
    inputEl.focus(); 
    inputEl.setSelectionRange(selStart, selend); 
  } else if (inputEl.createTextRange) { 
    var range = inputEl.createTextRange(); 
    range.collapse(true); 
    range.moveend('character', selend); 
    range.moveStart('character', selStart); 
    range.select(); 
  } 
}

function textarea_maxlength(event) {
  var el = Event.element(event);
  var maxlen = 500;
  if (el.readAttribute('maxlength')) {
    maxlen = el.readAttribute('maxlength');
  }
  var code = (event.which) ? event.which : event.keyCode;
  if (code != Event.KEY_BACKSPACE &&
      code != Event.KEY_INSERT &&
      code != Event.KEY_DELETE &&
      code != Event.KEY_UP &&
      code != Event.KEY_DOWN &&
      code != Event.KEY_LEFT &&
      code != Event.KEY_RIGHT) {
    if (el.getValue().length >= maxlen) {
      Event.stop(event);
      return false;
    }
  }
  return true;
}

function init_basic()
{
  // Formulaire d'inscription
  if ($('signinForm')) {
    $('signinForm').observe('submit', function(event) {
      if (!validate_cgv()) {
        Event.stop(event);
      }
    }, false);
  }
  // Lien popup pour guide ISBN
  if ($('isbnGuidePopup')) {
    $('isbnGuidePopup').observe('click', function(event) {
      params = 'resizable=no,location=no,width=780,height=550,menubar=no,status=no,scrollbars=yes,menubar=no';
      window.open('/guide_isbn/popup', 'Guide de demande d\'ISBN', params);
      Event.stop(event);
    }, false);
  }
  // Initialise la page detail doc
  if ($$('.detail_doc').length > 0) {
    // Initialise le bouton d'ajout dans le panier (impression)
    if ($('add_to_cart_print')) {
      $('add_to_cart_print').observe('click', function(event) {
        var el = Event.element(event);
        add_to_cart($('id_doc').innerHTML, 'print', detail_doc_add_to_cart_callback, el);
      }, false);
    }
    // Initialise le bouton d'ajout dans le panier (impression) - commande auteur
    if ($('add_to_cart_print_owner')) {
      $('add_to_cart_print_owner').observe('click', function(event) {
        document.location.href = '/home/commande-auteur/' + $('id_doc').innerHTML + '/1';
      }, false);
    }
    // Initialise le bouton d'ajout dans le panier (telechargement)
    if ($('add_to_cart_download')) {
      $('add_to_cart_download').observe('click', function(event) {
        var el = Event.element(event);
        add_to_cart($('id_doc').innerHTML, 'download', detail_doc_add_to_cart_callback, el);
      }, false);
    }
  }
  // Initialise le systeme de commentaire d'un ouvrage
  if ($('doc_comment')) {
    if ($('comment_text') && $('comment_text_count')) {
      Event.observe($('comment_text'), 'keypress', textarea_maxlength);
      Event.observe($('comment_text'), 'keyup', function(event) {
        var el = Event.element(event);
        char_left = 500 - el.getValue().length;
        char_left = (char_left <= 0) ? 0 : char_left;
        if (char_left <= 0) {
          $('comment_text_count').addClassName('no_char_left');
          $('comment_text_count').removeClassName('thirty_char_left');
        } else if (char_left > 0 && char_left <= 30) {
          $('comment_text_count').addClassName('thirty_char_left');
          $('comment_text_count').removeClassName('no_char_left');
        } else {
          $('comment_text_count').removeClassName('no_char_left');
          $('comment_text_count').removeClassName('thirty_char_left');
        }
        $('comment_text_count').down('strong').update(char_left);
      });
    }
    if ($('comment_cgv') && $('submit_comment')) {
      Event.observe($('comment_cgv'), 'change', function(event) {
        var el = Event.element(event);
        if (el.getValue() != 1) {
          $('submit_comment').disabled = true;
        } else {
          $('submit_comment').disabled = false;
        }
      });
      $('submit_comment').disabled = true;
    }
  }
}

function init_doc_publish()
{
  $$('.format_select .format, .format_select .format *').each(function(el) {
    Event.observe(el, 'click', function(event) {
      var el = Event.element(event);
      Event.stop(event);
      if (!el.hasClassName('format')) {
        el = el.up('.format');
      }
      var id = el.readAttribute('id');
      if (id) {
        $('doc_format_input').value = id.substring(7);
        $$('.format_select .selected').each(function(el) { el.removeClassName('selected'); } );;
        el.addClassName('selected');
	if ($$('.etape1').length > 0) {
	  var format = el.down('.descr').innerHTML;
	  var lang = $('gabarit_language').getValue();
	  var reg = new RegExp("^([0-9]+ x [0-9]+) mm$", "g");
  	  var res = reg.exec(format);
	  $('selected_format').update(res[1]);
	  $('gabarit_download_link').setAttribute('href', '/medias/gabarit_' + id + '_' + lang + '.doc');
	}
      }
      refresh_tab_selector(event);
    });
  });
  $$('.color_select .color, .color_select .color *').each(function(el) {
    Event.observe(el, 'click', function(event) {
      var el = Event.element(event);
      Event.stop(event);
      if (!el.hasClassName('color')) {
        el = el.up('.color');
      }
      var id = el.readAttribute('id');
      if (id) {
        $('doc_color_input').value = id.substring(6);
        if ($('devis_color'))
        {
          var v = id.substring(6);
          if (v == 'full') {
            $('devis_color').value = 'color';
          } else if (v == 'mixte') {
            $('devis_color').value = 'nb_color';
          } else {
            $('devis_color').value = 'nb';
          }
	  update_devis_ajax();
        }
        $$('.color_select .selected').each(function(el) { el.removeClassName('selected'); } );;
        el.addClassName('selected');
      }
    });
  });
  if ($('user_send_new_file')) {
    Event.observe($('user_send_new_file'), 'click', function(event) {
      Event.stop(event);
      var el = Event.element(event);
      $$('.publier .user_file').each(function(el) {
        el.style.display = 'block';
      });
      el.up('.user_file_new').hide();
    });
  }
  if ($$('.etape1, .etape2, .etape3, .etape4, .etape5, .etape6, etape7, etape8, etape9').length > 0) {
    $$('#header a, #main_menu a, #footer a').each(function(el) {
      Event.observe(el, 'click', function(event) {
	if (!confirm("Voulez-vous vraiment quitter le processus de publication ?")) {
	  Event.stop(event);
	}
      });
    });
  }
}

function refresh_enhanced_checkboxes(input)
{
  var list = input.up('.enhancedForm').select('.radio input');
  if (list) {
    list.each(function(el) {
      var type = el.readAttribute('type');
      if (type == 'radio' || type == 'checkbox') {
        if (el.checked) {
          el.up('.radio').addClassName('checked');
        } else {
          el.up('.radio').removeClassName('checked');
        }
      }
    });
  }
}

function init_enhanced_forms()
{
  $$('.enhancedForm .radio input').each(function(el) {
    var type = el.readAttribute('type');
    if (type == 'radio' || type == 'checkbox') {
      Event.observe(el, 'change', function(event) {
        refresh_enhanced_checkboxes(el);
      });
    }
  });
  $$('.enhancedForm .radio input').each(function(el) {
    refresh_enhanced_checkboxes(el);
  });
}

function ajax_preview_couv()
{
  url = '/ajax/deposer/preview_couv';
  Lightview.show({
    href: url,
    rel: 'ajax',
    options: {
    height: 700,
    width: 1000,
    topclose: true,
    closeButton: true,
    overlayClose: true
  }
  });
}

function ajax_generate_couv() {
  url = '/ajax/deposer/generate_couv';
  new Ajax.Request(url, {
    method: 'get',
    onSuccess: function(transport) {
      if (transport.responseText != '') {
        ajax_preview_couv();
      }
    }
  });
}

var slideBox = new Array();
var timers = new Array();

function init_slidebox()
{
  $$('.slideBox .mainMenu .menuItem').each(function(el) {
    a = el.down('a');
    if (a) {
      if (!a.up('.menuItem').hasClassName('defaultItem')) {
        a.setStyle({ width: '95%' });
      } else {
        a.setStyle({ width: '100%' });
      }
      Event.observe(a, 'mouseover', function(event) {
        var el = Event.element(event);
        if (el.nodeName != 'A') {
          el = el.up('a');
        }
        if (el) {
          var itemName = el.up('.menuItem').classNames().grep(/^item[0-9]+$/);
          Effect.Queues.get('q' + itemName).each(function(effect) { effect.cancel(); });

          el.up('.menuItem').addClassName('currentItem');
          new Effect.Morph(el, {
            style: 'width: 100%',
            duration: 0.3,
            queue: { position: 'end', scope: 'q' + itemName }
          });
        }
      });
      Event.observe(a, 'mouseout', function(event) {
        var el = Event.element(event);
        if (el.nodeName != 'A') {
          el = el.up('a');
        }
        if (el) {
          var itemName = el.up('.menuItem').classNames().grep(/^item[0-9]+$/);
          Effect.Queues.get('q' + itemName).each(function(effect) { effect.cancel(); });

          el.up('.menuItem').removeClassName('currentItem');
          if (!el.up('.menuItem').hasClassName('defaultItem')) {
            new Effect.Morph(el, {
              style: 'width: 95%',
              duration: 0.3,
              queue: { position: 'end', scope: 'q' + itemName }
            });
          }
        }
      });
    }
  });
}

function init_info_popup()
{
  $$('a.more_infos').each(function(el) {
    if (el.down('.infos_content')) {
      var content = el.down('.infos_content').innerHTML;
      new Tip(el, content, {
        hook: { tip: 'bottomMiddle', mouse: true },
        offset: { x: 0, y: 0 },
        stem: 'bottomMiddle',
        radius: 3,
        border: 3,
        style: 'default',
        width: 350
      });
    }
  });
}

function init_popup()
{
  init_info_popup();

  $$('a.cgv_popup').each(function(el) {
    Event.observe(el, 'click', function(event) {
      Event.stop(event);
      mypopup('/cgv/popup', 'cgv');
    });
  });

  $$('a.charte_popup').each(function(el) {
    Event.observe(el, 'click', function(event) {
      Event.stop(event);
      mypopup('/charte/popup', 'cgv');
    });
  });

  $$('a.button_delete_my_book').each(function(el) {
    Event.observe(el, 'click', function(event) {
      if (confirm("Voulez-vous vraiment supprimer cet ouvrage ?")) {
        return true;
      }
      Event.stop(event);
      return false;
    });
  });
}

//Gestion en ajax des pager de la slideBox avec pour class slibeBoxAjax
// Gestion en ajax des onglets de la slideBox avec pour class slibeBoxAjax
function init_slidebox_index()
{
  $$('.slideBoxAjax .menuItem a').each(function(el) {
    if (el.id == "logout" || el.id == "back-home") { return 0;  }
    Event.observe(el, 'click', function(event) {
      Event.stop(event);
      var el = Event.element(event);
      if (el.nodeName != 'A') {
        el = el.up('a');
      }
      el.up('.mainMenu').select('.defaultItem a').each(function(el) {
        el.setStyle({ width: '95%' });
        el.up('.menuItem').removeClassName('defaultItem');
      });
      el.up('.menuItem').addClassName('defaultItem');
      el.setStyle({ width: '100%' });
      var link = el.readAttribute('href') + '/ajax';
      $$('.slideBox .content')[0].style.display = 'none';
      $$('.slideBox .ajax_loader')[0].show();
      new Ajax.Request(link, {
        method: 'get',
        onSuccess: function(transport) {
        if (transport.responseText != '') {
          $$('.slideBox .ajax_loader')[0].fade();
          $$('.slideBox .content')[0].update(transport.responseText);
          $$('.slideBox .content')[0].style.display = 'block';
        }
      }
      });
    });
  });
}

function refresh_tab_selector(event)
{
  if (!event.nodeType) {
    var el = Event.element(event);
  } else {
    var el = event;
  }
  if (!el.hasClassName('tab')) { el = el.up('.tab'); }
  el.up('.tab_selector').select('.tab').each(function(el2) {
    el2.down('.tab_layer').removeClassName('tab_checked');
  });
  el.down('.tab_layer').addClassName('tab_checked');
  descr = el.down('.tab_explain');
  if (descr) {
    el.up('.tab_selector').down('.tab_selector_explain').update(descr.innerHTML);
  }
}

function init_tab_selector()
{
  $$('.tab_selector').each(function(el) {
    el.select('.tab').each(function(tab) {
      Event.observe(tab, 'click', refresh_tab_selector);
    });
  });
}

function init_carousel()
{
  $$('.carousel').each(function(el) {
    var list = el.select('.carousel_item');
    if (list && list.length > 0) {
      var current = 0;
      new PeriodicalExecuter(function(pe) {
        var items = list[current].up('.carousel_items');
        var left = items.getStyle('left');
        if (left) left = Math.abs(parseInt(left.substring(0, left.length - 2)));
        current++;
        if (current >= list.length) {
	  current = left = 0;
        } else {
          left = left + parseInt(list[current].getWidth());
        }
        new Effect.Opacity(items, { duration: 0.1, from: 1, to: 0.4 });
        new Effect.Morph(items, {
	  afterFinish: function(effect) { new Effect.Opacity(effect.element, { from: 0.4, to: 1, duration: 0.2 }); },
	  style: 'left: -' + left + 'px',
	  duration: 0.5
        });
      }, 5);
    }
  });
}

Event.observe(window, 'load', init, false);

function init()
{
  IEversion = checkVersion();
  if (IEversion > 0 && IEversion < 7) {
    document.location.href = '/browser-error';
  }

  /* Charge la barre de message instantanee */
  loadInstantMessage();

  /* Charge le menu dynamique du haut */
// loadTopMenu();

  /* Charge le changement de vue dynamique (librairie) */
  loadDynView();

  /* Charge les filtres dynamiques (librairie) */
  loadAjaxFilters();

  /* Charge les tips des livres */
  loadBookTips();

  /* Charge les scripts de la page publier */
  loadPublish();

  /* Charge le "easy-click" sur les select box multiples */
  init_multiple_select();

  /* Charge le devis en ligne */
  init_devis();

  /* Charge les initialisations diverses */
  init_basic();

  /* Charge les scripts de la navbar document */
  init_doc_navbar();

  /* Init tab selector */
  init_tab_selector();

  /* Charge la publication d'ouvrage */
  init_doc_publish();

  /* Enhanced forms */
  init_enhanced_forms();

  /* Load SlideBox */
  init_slidebox();

  init_popup();

  init_slidebox_index();
  
  /*christopher*/
  init_carousel();
  
  /* FancyZoom load */
  setupZoom();
  init_carousel();
  
  //TODO
  IEversion = checkVersion();
  
  if (IEversion > 0 && IEversion < 7) {
    document.location.href = '/browser-error';
  }
}
