/**

  ezs.grandair.js version 1.0 - 22.12.2006
  designed by Christophe PERSOZ - www.ogoon.fr
  Copyright © 2006 - ogoon
  
  Fonctions JS opur le site GrandAir.com
    
**/

var error = new InitError(); // variables globales de gestion d'erreur. Utilise par toutes les fonctions de gestion d'erreur

window.name="main";

/* Initialisation de la gestion d'erreur */
function InitError()
{
  this.nbError = 0;
  this.add = addError;
  this.remove = delError;
}

/* reinitialise la class d'un champ signale comme mauvais
*/
function initInput(object)
{
  document.getElementById(object.name).style.backgroundColor = 'transparent';
}

/* Ajoute une erreur au tableau d'erreur
*/ 
function addError(objName)
{
  var obj = new Object;
    obj.nom = objName;
    obj.val = true;
  var found = 0;
  
  // regarde si l'erreur existe deja, si oui change se valeur en true, sinon ou l'ajoute au tableau d'erreur
  for (i=0; i<error.nbError; i++)
  {
    // si l'element existe deja on change la valeur
    if (error[i].nom == objName)
    {
      error[i].val = true;
      found = 1;
    }
  }
  
  // on rajoute l'erreur
  if (found == 0)
  {
    error[error.nbError] = obj;
    error.nbError++;
  }
}

/* Verirife si l'erreur existe deja, si oui la supprime
*/
function delError(objName)
{
  for (i=0; i<error.nbError; i++)
  {
    if (error[i].nom == objName)
      error[i].val = false;
  }
}

/*  Valide un formulaire avant envoi
*/
function checkForm(formName)
{
  document.forms[formName].method = "POST";
  indice = 0;
  errList = '';
  
  for (i=0; i<error.nbError; i++)
  {
    if (error[i].val == true)
    {
      var referent = document.getElementById(error[i].nom);
      if(!referent)
        error.remove(error[i].nom);
      
      document.getElementById(error[i].nom).style.backgroundColor = '#ffc000';
      indice++;
    }
  }
  
  // formulaire valide
  if (indice == 0)
    return (true);
  
  // formulaire invalide
  if (indice > 1)
    alert ( 'Vous avez omis de remplir/corriger '+ indice + ' champs.\nMerci de vérifier et/ou corriger les champs indiqués.' );
  else
    alert ( 'Vous avez omis de remplir/corriger le champ indiqué.\nMerci de vérifier et/ou corriger votre saisie.' );

  return (false);
}

/*  Valide le formulaire de recherche
*/
function checkSearch(formName)
{
  document.forms[formName].method = "POST";
  
  if (document.getElementById('keyword').value == '' || document.getElementById('keyword').value.length < 3)
  {
    document.getElementById('keyword').style.backgroundColor = '#ffc000';
    alert ( 'Un mot clé pour la recherche doit comporter au moins 3 caractères, merci de vérifier votre saisie.' );
    return (false);
  }
  
  var regEx = /([0-9A-Za-z,'"-_]{3,})$/gi;
  
  if (document.getElementById('keyword').value.match(regEx) == null ) {
    document.getElementById('keyword').style.backgroundColor = '#ffc000';
    alert ( 'Les mots clé ne peuvent pas contenir de caractères spéciaux, merci de vérifier votre saisie.' );
    return (false);
  }
  
  document.getElementById('keyword').style.backgroundColor = 'transparent';
  return (true);
}


/* Valide le form des cvg
*/
function validCGV()
{
  if (document.getElementById('cgv').checked == false)
  {
    error.add('cgv');
    alert(cgv_missing);
    return (false);
  }
  else
  {
    error.remove('cgv');
    return (true);
  } 
}

/*  Valide un champ texte, doit etre non nul
*/
function isValidText(object)
{
  if (object.value == '')
  {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  document.getElementById(object.name).style.backgroundColor = 'transparent';
  error.remove(object.name);
  return (true);
}


/*  Valide un numero de telephone, au moins 8 car, accepte () + et space
*/
function isValidCaptcha(object)
{
  if (object.value == '')
  {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  
  var regEx = /([0-9A-Z]{4})$/gi;

  if (object.value.match(regEx) == null ) {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  
  document.getElementById(object.name).style.backgroundColor = 'transparent';
  error.remove(object.name);
  
  return (true);
}


/*  Valide un numero de telephone, au moins 8 car, accepte () + et space
*/
function isValidPhone(object)
{
  if (object.value == '')
  {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  
  var regEx = /([0-9\ \+\(\)]{8,})$/gi;
  
  if (object.value.match(regEx) == null ) {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  
  document.getElementById(object.name).style.backgroundColor = 'transparent';
  error.remove(object.name);
  
  return (true);
}

/*  Valide un mot de passe, doit etre non nul et len>6
*/
function isValidPass(object)
{
  if (document.getElementById(object.name).value == '' || document.getElementById(object.name).value.length < 6)
  {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  else
  {
    document.getElementById(object.name).style.backgroundColor = 'transparent';
    error.remove(object.name);
  }
  return (true);
}

/*  Valide un mot de passe, doit etre non nul et len>6
*/
function isValid2Pass(objname, select)
{
  if (document.getElementById(objname).value == '' || document.getElementById(objname).value.length < 6)
  {
    document.getElementById(objname).style.backgroundColor = '#ffc000';
    error.add(objname);
    return (false);
  }
  else
  {
    document.getElementById(objname).style.backgroundColor = 'transparent';
    error.remove(objname);
  }

  if ((document.getElementById('pass_v').value == '' || document.getElementById('pass_v').value != document.getElementById(objname).value) && select.name!='pass_c')
  {
    alert(bad_chk_pass);
    document.getElementById('pass_v').style.backgroundColor = '#ffc000';
    error.add('pass_v');
    return (false);
  }
  else
  {
    document.getElementById('pass_v').style.backgroundColor = 'transparent';
    error.remove('pass_v');
  }
  
  return (true);
}

/*  Valide une adresse mail
*/
function isValidMail(object)
{
  //var regEx = /([a-z0-9]+([-_]?[a-z0-9]+)*.)*[a-z0-9]+([-_]?[a-z0-9]+)*@([a-z0-9]+([-_]?[a-z0-9]+)*\.)[a-z]{1,3}(.{1}[a-z]{2})?$/gi;
  var regEx = /^([\w-]+(?:\.[\w-]+)*)\@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$|(\[?(\d{1,3}\.){3}\d{1,3}\]?)$/i;
  
  if (object.value == '')
  {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  
  if (object.value.match(regEx) == null ) {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  
  document.getElementById(object.name).style.backgroundColor = 'transparent';
  error.remove(object.name);
  return (true);
}

/*  Valide un champ texteArea, doit etre non nul
*/
function isValidTextArea(object)
{
  if (object.value == '')
  {
    document.getElementById(object.name).style.backgroundColor = '#ffc000';
    error.add(object.name);
    return (false);
  }
  document.getElementById(object.name).style.backgroundColor = 'transparent';
  error.remove(object.name);
  return (true);
}


/*  Reset les champs password du formulaire
*/
function resetPasswords(object)
{
  document.getElementById(object.name).value = '';
  document.getElementById('pass_v').value = '';
  document.getElementById('new_pass').value = 1;
  return;
}

/*  Initialise les champs obligatoires pour le form d'inscription
*/
function InitFields()
{
  addError('pass_c'); addError('pass_v'); addError('nom_c'); addError('prenom_c'); addError('adr1_c'); addError('zip_c');
  addError('ville_c'); addError('tel_c'); addError('nom_lvr'); addError('prenom_lvr'); addError('adr1_lvr'); addError('zip_lvr'); addError('ville_lvr');
  addError('tel_lvr'); addError('captcha_code');
}

/* Mise a jour des tailles en fonction de la couleur / produit / stock dispo
*/

function updateSizes(XHRForm)
{
  if (this.value != '')
  {
    var cList = document.forms[XHRForm.name].elements["coulList"];
    var sList = document.forms[XHRForm.name].elements["sizeList"];
    var prodID = document.getElementById("prodId").value;
    var index = cList.selectedIndex;
    if(index < 1)
       sList.options.length = 0;
    else
    {
       var xhr_object = null;
      
       if(window.XMLHttpRequest) // Firefox et Safari
        xhr_object = new XMLHttpRequest();
       else if(window.ActiveXObject) // Internet Explorer
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
       else
       { // XMLHttpRequest non supporté par le navigateur
        alert(no_xhr);
        return;
       }
    
       xhr_object.open("POST", "_getsize.php", true);
      
       xhr_object.onreadystatechange = function()
       {
        if(xhr_object.readyState == 4)
         eval(xhr_object.responseText);
       }
    
       xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
       var data = "coul="+escape(cList.options[index].value)+"&form="+XHRForm.name+"&list=sizeList&prod="+prodID;
       xhr_object.send(data);
    }
  }
}

/* Recalcule les frais de port sur le panier courant
*/
function updateFdp(XHRForm, ssTotalHT)
{
  if (this.value != '')
  {
    var pList = document.forms[XHRForm.name].elements["pays"];
    var pCheckbox = document.getElementById('retrmag').checked ? 1 : 0 ;
    
    var index = pList.selectedIndex;
    if(index >= 0)
    {
      var xhr_object = null;
      
      if(window.XMLHttpRequest) // Firefox et Safari
        xhr_object = new XMLHttpRequest();
      else if(window.ActiveXObject) // Internet Explorer
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
      else
      { // XMLHttpRequest non supporté par le navigateur
        alert(no_xhr);
        return;
      }
      
      xhr_object.open("POST", "_getfdp.php", true);
      
      xhr_object.onreadystatechange = function()
      {
        if(xhr_object.readyState == 4)
        eval(xhr_object.responseText);
      }
      xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      var data = "form="+XHRForm.name+"&pays="+pList.value+"&retrmag="+pCheckbox;
      xhr_object.send(data);
    } else {
      
    }
  }
}


/* Active le champs Qte si la valeur de la liste est # de ''
*/
function activeQty(formName, value)
{
  if (value != '')
  {
    document.forms[formName].elements['qte'].style.backgroundColor = 'transparent';
    document.forms[formName].elements['qte'].disabled = false;
    document.forms[formName].elements['qte'].value = 1;
    return (true);
  }
  else
  {
    document.forms[formName].elements['qte'].style.backgroundColor = 'transparent';
    document.forms[formName].elements['qte'].disabled = true;
    document.forms[formName].elements['qte'].value = qte_txt;
    document.getElementById('addCart').disabled = true;
  }
}

/*  Valid la couleur choisie
*/
function validCoul(formName, value)
{
  if (value == '')
  {
    document.forms[formName.name].elements['qte'].value = qte_txt;
    document.forms[formName.name].elements['qte'].disabled = true;
    document.forms[formName.name].elements['qte'].style.backgroundColor = 'transparent';
    return (false);
  }
  document.forms[formName.name].elements['qte'].disabled = false;
  document.forms[formName.name].elements['qte'].value = 1;
  document.getElementById('addCart').disabled = false;
  return;
}


/*  Valid la qté saisie et le fait que l'article est bien disponible.
*/
function validQty(formName, value)
{
  if (isNaN(value) || value <= 0 || value == '' || value.indexOf('.') != -1 || value.indexOf(',') != -1 || value > 50 || value == qte_txt)
    document.forms[formName].elements['qte'].value = 1;
  else
  {
    document.getElementById('addCart').disabled = false;
    document.forms[formName].elements['qte'].disabled = false;
  }
  return;
}

/* Valide l'ajout au panier
*/
function checkQte(formName)
{
  document.forms[formName].method = "POST";
  indice = 0;
  for (i=0; i<error.nbError; i++)
  {
    if (error[i].val == true)
    {
      var referent = document.getElementById(error[i].nom);
      if(!referent)
        error.remove(error[i].nom);
      
      document.getElementById(error[i].nom).style.backgroundColor = '#ffc000';
      indice++;
    }
  }
  
  // formulaire valide
  if (indice == 0)
    return (true);
  
  // formulaire invalide
  if (indice > 1)
    alert ( 'Vous avez omis de remplir/corriger '+ indice + ' champs.\nMerci de vérifier et/ou corriger les champs indiqués.' );
  else
    alert ( 'Vous avez omis de remplir/corriger le champ indiqué.\nMerci de vérifier et/ou corriger votre saisie.' );

  return (false);
}


/*  Recalcule le panier
*/
function updBasket(formName)
{
  document.forms[formName].action = '_updpanier.php';
  document.forms[formName].submit();
}


/*  Soumet le panier au paiement
*/
function checkOut(formName)
{
  document.forms[formName].action = 'commander.php';
  document.forms[formName].submit();
}


/*  Deconnecte un utilisateur de son compte
*/
function logOut(formName)
{
  document.forms[formName].action = '_logout.php';
  document.forms[formName].submit();
}


/* Annule une commande en cours de finalisation
*/
function cancelCmd(formName)
{
  if (confirm(cancel_cmd))
  {
    document.forms[formName].action = '_cancelcmd.php';
    document.forms[formName].submit();
  }
  return;
}

/*  Retourne a l'edition des adresses
*/
function changeAddress()
{
  location.href = 'validation-adresse.php';
}

/*  Ouvre une page avec le lien envoyé
*/ 
function openWin(Url,windowName)
{
  param = 'width=860,height=1024,fullscreen=0,directories=0,location=0,resizable=1,menubar=0,scrollbars=1,status=1,toolbar=0';
  wn = window.open(Url,windowName,param);
  wn.focus();
  return;
}

/* Montre cache la description des marques
*/
function showMarque(newID)
{
  div=document.getElementById('Marques').getElementsByTagName("div");
  li=document.getElementById('Marques').getElementsByTagName("li")
  
  for (i=0;i<div.length;i++)
  {
    if (div[i].id.indexOf('f.mq_') != -1)
      div[i].style.display='none';
    if (div[i].id == ('f.mq_'+newID))
      div[i].style.display='block';   
  }
  for (i=0;i<li.length;i++)
  {
    if (li[i].id.indexOf('l.mq_') != -1)
      li[i].className = 'none';
    if (li[i].id == ('l.mq_'+newID))
      li[i].className = 'active';
  }
  
  document.location = "#mq_desc";
  
  return;
}


/*  Lance l'impression de la commande selectionnée
*/
function _getCmd(IDCmd)
{
  openWin('_printCmd.php?cmd='+IDCmd, 'commande');
  return;
}


/*  Lance l'impression de la facture selectionnée
*/
function _getFact(IDFct)
{
  openWin('_printFct.php?fct='+IDFct, 'facture');
  return;
}


/* Rafraichi le captcha
*/
function refreshImg()
{
  document.getElementById('IDImage').src = '_captcha.php?' + Math.random();
  return;
}


/* Copy l'adresse de facturation sur l'adresse de livraison
*/
function copyAdrtoLvr(select)
{
  inAdr = document.getElementById('iAdrC').getElementsByTagName("input");
  selAdr = document.getElementById('iAdrC').getElementsByTagName("select");
  
  // copie des inputs
  for (i=0; i<inAdr.length; i++)
  {
    fBase = inAdr[i].id.substr(0,inAdr[i].id.lastIndexOf('_'));
    if (document.getElementById(fBase + '_lvr'))
      document.getElementById(fBase + '_lvr').value = inAdr[i].value;
  }
  
  // copie des select
  for (i=0; i<selAdr.length; i++)
  {
    fBase = selAdr[i].id.substr(0,selAdr[i].id.lastIndexOf('_'));
    if (document.getElementById(fBase + '_lvr'))
      document.getElementById(fBase + '_lvr').options[selAdr[i].selectedIndex].selected = true;
  }
  
  // Suppr des erreurs
  delError('nom_lvr');
  delError('prenom_lvr');
  delError('adr1_lvr');
  delError('zip_lvr');
  delError('ville_lvr');
  delError('tel_lvr');
  
  select.disabled = true;
}


/* Diaporama pour le destockage sur l'index
*/
var speed = 1500; // millisecondes
var j=0;
var preLoad = new Array();
var Pct = new Array();

function initSlideShow()
{
  for (i=0; i< Pct.length; i++)
  {
     preLoad[i] = new Image();
     preLoad[i].src = Pct[i];
  }
}

function runSlideShow()
{
  document.getElementById('DestockageImg').src = preLoad[j].src;
  j++;
  if (j > (Pct.length-1))
    j=0;
  t = setTimeout('runSlideShow()', speed);
}