/**
 * Fonction génériques pour tout le site
 */

/**
 * affiche la fenetre de login
 */
function showLogin()
{
  if ($('logincontener') && $('logincontener').style.display == 'none' )
  {
    Effect.Appear('logincontener', {duration: 0.5});
  }
}

/**
 * cache la fenetre de login
 */
function hideLogin()
{
  if ($('logincontener') && $('logincontener').style.display != 'none' )
  {
    Effect.Fade('logincontener', {duration: 0.5});
  }
}

/**
 * fonction de validation d'un email
 * @param {Object} email: email a valider
 */
function validMail(email)
{
  email = email + "";
  var reg = /^([_a-z0-9-]+(\.[_a-z0-9-]+)*)@([_a-z0-9-]+(\.[_a-z0-9-]+)*)\.([a-z]{2,6})$/i;
  return reg.test(email);
}

/**
 * verifie que tous les champs obligatoires (qui ont une class css appel�e "mandatory") sont remplis avant de submiter le form
 * verifie egalement que les champs dont le nom contient "email" sont au bon format
 */
function checkForm(form_id)
{
  if($(form_id))
  {
    elts = $(form_id).elements;
    txt = '';
    txtemail = '';
    for (i=0; i<elts.length; i++)
    {
      if (elts[i].className.indexOf("mandatory") > -1 && elts[i].value == '')
      {
        txt += '- '+elts[i].name + '\n';
      }
      if (elts[i].name.indexOf('email') > -1)//le nom du champ contient email, on peut supposer que c'est un email et faire les verifs
      {
        if (elts[i].value != '' && !validMail(elts[i].value))
        {
          txtemail = 'L\'email n\'est pas valide !\n';
        }
      }
    }
    txt = (txt.length > 0) ? 'Ces champs là sont obligatoires :\n'+txt : '';
    txt = (txtemail.length > 0) ? txt+'\n'+txtemail : txt;
    if(txt.length > 0)
    {
      txt = txt.replace('cpn_name', 'Raison sociale');
      txt = txt.replace('cpn_address', 'Adresse');
      txt = txt.replace('cpn_postcode', 'Code postal');
      txt = txt.replace('cpn_city', 'Ville');
      txt = txt.replace('usr_lastname', 'Nom');
      txt = txt.replace('usr_firstname', 'Prénom');
      txt = txt.replace('usr_job', 'Fonction');
      txt = txt.replace('usr_email', 'Email');
      txt = txt.replace('name', 'Nom');
      txt = txt.replace('email', 'Email');
      txt = txt.replace('message', 'Message');
      alert(txt);
      return false;
    }
    $(form_id).submit();
  }
}

/**
 * dans le resum� de la commande, copie l'adresse de la company dans la billing adresse
 */
function copyAdr()
{
  if($('chkcopyAdr'))
  {
    chkbx = $('chkcopyAdr');
    if(chkbx.checked)
    {
      $('bcp_name').value = $F('cpn_name');
      $('bcp_address').value = $F('cpn_address');
      $('bcp_postcode').value = $F('cpn_postcode');
      $('bcp_city').value = $F('cpn_city');
      $('bcp_cty_id').value = $F('cty_id');
      $('bcp_sta_id').value = $F('sta_id');
      $('bcp_tel').value = $F('cpn_tel');
      $('bcp_num_intra').value = $F('cpn_num_intra');
    }
  }
}

/**
 * affiche/cache la popup d'help dans le formulaire de registration du site
 */
function showPopHelp()
{
  if ($('pophelp'))
  {
    if ($('pophelp').style.display == 'none' )
    {
      Effect.Appear('pophelp', {duration: 0.5});
    }else if($('pophelp').style.display != 'none')
    {
      Effect.Fade('pophelp', {duration: 0.5});
    }
  } 
}

function helpAutocomplete()
{
  //verifier si le focus n'est pas sur la suggest de l'autocomplete
  if($('company_auto_complete'))
  {
    new Ajax.Updater('company_detail', '/company/verifExist', 
      {parameters: {  company: $F('company')},
      asynchronous:true,
      evalScripts:true,
      onComplete:function(request, json){Element.hide('ajax_anim')},
      onLoading:function(request, json){Element.show('ajax_anim')}});
  }
}


/**
 * appel� sur le onKeyPress d'un input, limite la saisie des donn�es a des chiffres et des points et le backspace [\b]
 */
function limitDecimal(e)
{
  if(document.all) e=window.event; // for IE
  curChar = (e.which > 0) ? String.fromCharCode(e.which) : String.fromCharCode(e.keyCode);
  if (!curChar.match(/\d|\.|[\b]/))
  {
    return false;
  }
}

/**
 * cache une div
 * @param {Object} id
 */
function hideDiv(id)
{
  if($(id))
  {
    $(id).style.display = 'none';
  }
}

/**
 * affiche une div
 * @param {Object} id
 */
function showDiv(id)
{
  if($(id))
  {
    $(id).style.display = 'block';
  }
}

/**
 * appel en ajax la fonction qui va effacer un document
 * @param {Object} id
 */
function delDoc(id)
{
  if(confirm("Do you really want to delete this file ?"))
  {
    new Ajax.Updater('doc_list',myurl+id, {asynchronous:true, evalScripts:false});
  }
}

/**
 * switch l'affichage d'une div pass� en param, entre block et none
 * @param {Object} id
 */
function swapDisplay(id)
{
  var div = $(id);
  div.style.display = (div.style.display == "block") ? "none" : "block";
}

/**
 * Fonctions d'Adobe pour le rollover
 * @param {Object} arg
 */
function newImage(arg) {
  if (document.images) {
    rslt = new Image();
    rslt.src = arg;
    return rslt;
  }
}

function changeImages() {
  if (document.images && (preloadFlag == true)) {
    for (var i=0; i<changeImages.arguments.length; i+=2) {
      document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
    }
  }
}

var preloadFlag = false;
function preloadImages() {
  if (document.images) {
    btn_lyon_over = newImage("btn_lyon-over.gif");
    btn_sanfrancisco_over = newImage("btn_sanfrancisco-over.gif");
    preloadFlag = true;
  }
}

/**
 * limit le nombre de caracteres saisis dans un champ 'obj' a une taille de 'limit'
 * @param {Object} obj : l'objet dont on doit limiter la value (ce n'est pas l'id de l'objet)
 * @param {Object} limit : limite, en nb caracteres
 * @param {Object} tooltip : eventuellement, ID d'un tag ou on indique le nb caracteres tap�s (idealement, un SPAN)
 */
function limitChar(obj,limit,tooltip)
{
  if(obj && obj.id && $(obj.id) && $F(obj.id))
  {
    content = $F(obj.id);
    content = content.substring(0,limit);
    $(obj.id).value = content;
    
    if($(tooltip))
    {
      $(tooltip).innerHTML = limit - content.length;
    }
  }
}

/**
 * renvoi la position absolue d'un objet (par rapport a la div principale du site)
 * @param {Object} obj
 */
function coordElement(obj)
{
  var x=0,y=0;
  var w = obj.offsetWidth;
  var h = obj.offsetHeight;
  //while (obj!=null)
  while (obj != $('main_content'))
  {
    x += obj.offsetLeft - obj.scrollLeft;
    y += obj.offsetTop - obj.scrollTop;
    
    obj=obj.offsetParent;
  }
  return {x:x,y:y,w:w,h:h};
}

/**
 * ajout d'un participant a la commande
 */
function addParticipant()
{
  if(participant_content.length > 0 && compteur)
  {
    compteur++;
    var txt = participant_content.replace(/_1/g,'_'+compteur);
    
    var participant = $('contparticipant');
    if (participant) 
    {
      var div = document.createElement('div');//Obligé de faire comme ca, IE n'aime pas bien les innerHTML, et ca garde les infos saisis pour les inputs precedents
      div.innerHTML = txt;
      participant.appendChild(div);
    }
  }
}

/**
 * efface le contener pour un participant
 * @param {Object} id
 */
function delParticipant(id)
{
  if(compteur > 1)
  {
    var indice = id.substring(5);
    var old = $('part_' + indice);
    if(old && old.parentNode && old.parentNode.removeChild)
    {
      old.parentNode.removeChild(old);
    }
    compteur--;
  }
}

/**
 * affiche le contenu par defaut dans la zone de recherche si elle est vide, et si elle n'est pas selectionné
 * efface le contenu si c'est le contenu par defaut et que la zone est selectionnee
 * sens 1 => focus, sens 2 => blur
 */
function defaultSearch(obj, sens)
{
  if(obj)
  {
    obj = $(obj.id);
    if(sens == 1 && obj.value == 'Votre recherche')
    {
      obj.value = '';
    }
    if(sens == 2 && obj.value == '')
    {
      obj.value = 'Votre recherche';
    }
  }
}

/**
 * affiche le bouton submit que si un moyen de paiement est selectionne et la case des cgv est cochée (resume_orderSuccess)
 */
function checkCGV()
{
  if(($F('payment_type_cb') || $F('payment_type_check')) && $('cgv').checked)
  {
    $('btnsubmit').disabled = '';
  }
  else
  {
    $('btnsubmit').disabled = 'disabled';
  }
}

/**
 * affiche/cache une checkbox en fonction de la value selectionnee dans une checkbox
 * @param {Object} obj
 */
function swapCheck(obj)
{
  if(obj)
  {
    var id = obj.id;
    var idx = id.replace('prf_id_','');
    //alert(idx);
    if(obj.selectedIndex == 0)
    {
      $('usr_use_meeting_'+idx).checked = false;
      $('usr_use_meeting_'+idx).disabled = true;
    }else{
      $('usr_use_meeting_'+idx).checked = true;
      $('usr_use_meeting_'+idx).disabled = false;
    }
  }
}


