/**
 * @version $Id: aidechoix.js,v 1.50 2011-01-07 17:49:49 yop Exp $
 * @package umc
 * @copyright Copyright (C) 2008 BROCELIA. All rights reserved.
 */

/* ************************* FONCTIONS UTILES *********************** */

/**
 * FORMATS DES ID :
 * Node_id d'une garantie : garantie_(niveau)_(id)
 */

// Renvoie le niveau d'une garantie
function getGarantieNiveau(node_id){
  return node_id.split('_')[1];
}

// Renvoie l'id d'une garantie
function getGarantieId(node_id){
  return node_id.split('_')[2];
}
// Renvoie l'id d'un pack
function getPackId(node_id){
  return node_id.split('_')[1];
}

// Affiche l image "traitement en cours"
function showTraitementEnCours(){
  return setTimeout(activeTraitementEnCours,10000);
}

function activeTraitementEnCours(){
  $('traitement').setStyle('display','block');
  var top = window.getScrollTop();
  $('traitement').setStyle('top',top+'px');
}

// Cache l'image "traitement en cours"
function hideTraitementEnCours(time){
  clearTimeout(time);
  $('traitement').setStyle('display','none');
}

/* ************************* FIN FONCTIONS UTILES *********************** */



/* ************************* VARIABLES UTILES *********************** */

// tableau d'�quivalences slide (0->3) => niveau(1->4)
slide2niveau = new Array(4,3,2,1);

// tableau d'�quivalences niveau (1->4) => slide (en px)
niveau2slide = new Array(null,84,55,27,0);

// Indique si on peut afficher ou pas le menu "Modifier/Retirer"
afficheModifSuppr = false;

// Personne sur qui on a cliqué pour afficher le menu
menu_aide_personne_courante = '';

// indique si le cp entré est bon ou pas
good_cp = false;

// regionid récupérée en bdd
regionid = '';

// ancienne regionid si on change le cp
old_region_id = '';

// cp entré lors de la derniere requete ajax
cp_courant = '';

// on sauve ici l'ancien $('reg') quand on le modifie lors de l appel Ajax "regionid"
// pour pouvoir le restaurer si l'internaute clique finalement sur "Annuler"
last_select_reg = null;

// Bloque les alert lightbox
alert_blocked = false;

/* ************************* FIN VARIABLES UTILES *********************** */


/* ************************* INITIALISATION *********************** */

window.addEvent('domready', function(){
  // Event sur les boutons des vignettes garanties
  $$('.vignette_garantie .btn_choisir, .vignette_garantie').each(function(i){
    i.addEvent('click',function(e){
      unselectGarantiesVignettes();
      if (i.hasClass('btn_choisir'))
        var vignette = i.parentNode;
      else
        var vignette = i;
      if (tab_garanties[getPackId(vignette.id)][0]) {
        selectGarantieVignette(vignette.id);
        majSlide(getGarantieNiveau(vignette.id));
      }
    });
  });

  // Event sur les boutons des vignettes packs
  $$('.vignette_pack .btn_choisir, .vignette_pack, .vignette_pack .btn_retirerp').each(function(i){
    i.addEvent('click',eventClickPack);
  });

  // event sur les boutons du formulaire
  $('form_btn_valider').addEvent('click',saveForm);
  $('form_btn_annuler').addEvent('click',function(e){
    hideForm();
    if ($('personne_new')) $('vignettes_gens').removeChild($('personne_new'));
  });

  // event sur les select H/F/E
  $$('.select_type').each(function(i){
    i.addEvent('change',function(e){changeImgPerso(i);});
  });

  // event bouton ajouter
  $('btn_ajouter').addEvent('click',addPersonne);

  // event click vignette
  setEventClickVignettes();

  // Evenement "modifier personne"
  $('menu_aide_modifier').addEvent('click',function(e){
    if(menu_aide_personne_courante!='' || menu_aide_personne_courante>=0)
      modifPersonne(menu_aide_personne_courante);
  });

  // Evenement "retirer personne"
  $('menu_aide_retirer').addEvent('click',function(e){
    if(menu_aide_personne_courante!='' || menu_aide_personne_courante>=0)
      supprPersonne(menu_aide_personne_courante);

  });

  formcheck = new FormCheck('form_aide_choix',{display:{tipsOffsetX:0,tipsOffsetY:75,addClassErrorToField:1}});
  if (document.cookie.length > 0) $('global_aide_choix_js').setStyle('display','block');
  else $('warning_aide').setStyle('display','block');

  // Initialisation du slide
  var el = $('slider');
  myslide = new Slider(el, el.getElement('.knob'), {
    steps: 3,
    range: [0],
    mode: 'vertical',
    onChange: function(value){
      selectGarantiesVignettes(slide2niveau[value]);
    }
  });

  // Initialisation du panier
  //console.log('domready');
  initAffPanier();

  setRegimesOptions();

  unselectGarantiesVignettes();
  unselectAllPacksVignettes();
  // on sélectionne la garantie et els packs enregistrés (TODO)
  // si aucune alors on grise packs et garanties
  var cookie = Cookie.get("personnes");
  if (cookie){
    personnes = Json.evaluate(cookie);
    regionid=personnes[0].regionid;
    good_cp = true;
    hideForm();
    initVignettes();
    setTarifs(personnes[0].reg);
    setExemple(personnes[0].reg);
    setEnSavoirPlus();
    var achats = Json.evaluate(Cookie.get("achat"));
    if (achats){
      mes_packs = achats.packs;
      setGarantie(achats.garantie);
      var niveau = tab_garanties[getGarantie()][6];
      selectGarantiesVignettes(niveau);//vignettes
      majSlide(niveau);//slide
    }else{
      var niveau_par_defaut = 100;
      $$('.vignette_garantie').each(function(i){
        var niveau_i = getGarantieNiveau(i.id);
        if (niveau_i<niveau_par_defaut) niveau_par_defaut = niveau_i;
      });
      setGarantie(niveau_par_defaut);
      selectGarantiesVignettes(niveau_par_defaut);//vignettes
      majSlide(niveau_par_defaut);//slide
    }
    etat_initial = false;
    // on met l event sur le bouton valider final : on a une personne entrée
    $('btn_valider_choix').addEvent('click',validerFormulaire);
  }else{
    $$('.vignette_garantie').each(function(i){
      griseGarantie(i.id);
    });
    $$('.vignette_pack').each(function(i){
      grisePack(i.id);
    });
    $('knob').setStyle('display','none');
    etat_initial = true;
  }

  // bulles d aide
  $$('.bulle_aide').each(function(i){
    i.addEvent('click',showBulleAide);
  });

  //$('mes_informations').addEvent('mouseout',hideModifSuppr);
});

// event click vignettes
function setEventClickVignettes(){
  $$('.personne img').each(function(i){
/*    i.addEvent('click',function(e){
        var id_personne = i.id.split('_')[2];
        if (id_personne != 'new'){
          var left = $('personne_'+id_personne).getLeft() - $('global_aide_choix').getLeft() + 60;
          if ($('menu_aide').style.display == 'none' || $('menu_aide').getLeft() - $('global_aide_choix').getLeft() != left ) showModifSuppr(id_personne);
          else hideModifSuppr();
        }
      });*/
      i.addEvent('mouseover',function(e){
        var id_personne = this.id.split('_')[2];
        if (id_personne != 'new')
          showModifSuppr(id_personne);
      });
      //$('vignettes_gens').addEvent('mouseout',hideModifSuppr);
  });
}

/* ************************* FIN INITIALISATION *********************** */



/* ************************* PARTIE PERSONNES *********************** */

// Efface les vignettes, et les réaffiche dans l'ordre (Ap,A,Exn)
function initVignettes(){

  // On trie le tableau
  sortPersonnes();

  // On efface les vignettes
  var node_vignettes = $('vignettes_gens');
  var NodeListe = $$('.personne');
  NodeListe.each(function(node){
    node_vignettes.removeChild(node);
  });

    // On les recrée
  personnes.each(function(i){
    addVignette(i.id_personne);
  });

  // on cache les select type
  $$('.select_type').each(function(i){
    i.setStyle('display','none');
  });

  // Autorise le menu "Modifier/Retirer"
  afficheModifSuppr = true;
  hideModifSuppr();

  // event click vignettes
  setEventClickVignettes();

  // On peut maintenant mettre tout dans le cookie
  fillCookiePersonne();
}

// crée un ensemble vignette + select type.
function addVignette(id){

  if (typeof(id) == 'undefined') id = 'new';

  var div_personne = new Element('div',{'id': 'personne_'+id,'class':'personne'});
  div_personne.injectInside($('vignettes_gens'));
  var select_personne = new Element('select',{'id': 'select_type_'+id,'class':'select_type','name':'select_type_'+id});
  var img_personne = new Element('img',{'id': 'img_personne_'+id});
  img_personne.injectInside($('personne_'+id));
  select_personne.injectInside($('personne_'+id));
  select_personne.addEvent('change',function(e){changeImgPerso(select_personne);});

  var selected = setOptionsSelect($('select_type_'+id));
  changeImgPerso($('select_type_'+id));

}

// Ajoute une personne (vignette+select+formulaire)
function addPersonne(e){
  addVignette('new');
  changeImgPerso($('select_type_new'));
  showForm();
}

// Pour modifier une personne
function modifPersonne(id){
  if (id < personnes.length)
    showForm(id);
}

// Pour supprimer une personne
function supprPersonne(id){
  if (typeof(id) == 'undefined') return;

  var personne = getPersonne(id);
  if (personne.type == '1' && getNbAdultes() == 1) return; // On ne supprime pas le souscripteur principal s'il est seul
  if (personne.type == '1' && getNbAdultes() == 2){
    // L'autre adulte devient souscripteur principal
    // En principe id_autre_adulte = 1 car dans l'ordre
    personnes[1].cp = personnes[id].cp;
  }
  delPersonne(id);

  initVignettes();

 // if (!(personne.type == '2' && getNbEnfants() > nb_enfants_max)){
    setTarifs(personnes[0].reg); // reload les tarifs
 // }
}

// Ajoute les options au select_type
function setOptionsSelect(select){
  var cpt=0;
  var options = new Array();
  var nbAdultes = getNbAdultes();
  var nbEnfants = getNbEnfants();
  var selected = '';

  if (select.id.split('_')[2] == 'new'){
    if (nbAdultes < 2){
      var tab_tmp = new Array();
      tab_adultes.each(function(i){
        if(i){
          select.options[cpt++] = new Option(i[0],'1:'+i[1]);
          if (selected == '') selected = cpt;
          tab_tmp[i[1]]=cpt; // pas trouvé d autre moyen
        }
      });

      if (nbEnfants == 0){
        // Si H et pas d'enfant, proposer F par défaut (et inversement).
        // Une seule personne est entrée
        var sous_principal = getPersonne(0);
        tab_adultes.each(function(i){
          if(i){
            if (sous_principal.sexe != i[1])
              selected = tab_tmp[i[1]];
          }
        });
      }
    }
    if (nbAdultes != 0){
      tab_enfants.each(function(i){
        if(i){
          select.options[cpt++] = new Option(i[0],'2:'+i[1]);
          //Si A1 et au moins 1 enfant : proposer premier enfant
          if (selected == '' || (nbAdultes == 1 && nbEnfants >0)) selected = (cpt>2)?3:1;
        }
      });
    }
  }else{
    // modification
    var personne = getPersonne(select.id.split('_')[2]);

    if (personne.type == 1 || (personne.type == 2 && nbAdultes < 2)){
      tab_adultes.each(function(i){
        if(i){
          select.options[cpt++] = new Option(i[0],'1:'+i[1]);
          if (personne.type == '1' && personne.sexe == i[1]) selected = cpt;
        }
      });
    }

    if (!(personne.type == 1 && nbAdultes == 1)){
      tab_enfants.each(function(i){
        if(i){
          select.options[cpt++] = new Option(i[0],'2:'+i[1]);
          if (personne.type == '2' && personne.sexe == i[1]) selected = cpt;
        }
      });
    }
  }
  select.selectedIndex = selected-1;

  return selected;
}

// Ajoute les bons régimes au selectbox "régime"
function setRegimesOptions(){
  if (typeof(tab_regimes) != 'undefined'){

    //last_select_reg = $('reg').clone(true); // on garde une copie au cas où l'utilisateur cliquerait sur "Annuler"
    //console.log(last_select_reg);
    $('reg').options.length=1; // pour garder le premier item qui est vide
    tab_regimes.each(function(i){
      if (typeof(i) != 'undefined') $('reg').options[$('reg').options.length] = new Option(i[1],i[0]);
    });

    // autre régime
    $('reg').options[$('reg').options.length] = new Option('Autre r\351gime','autre');
  }
}

// Change la petite image du personnage
function changeImgPerso(node){
  var value = node.value;
  var id = node.id;
  var id_image = 'img_personne_'+id.split('_')[2];

  if (value.split(':')[0] == '1')
    $(id_image).src=tab_adultes[value.split(':')[1]][2];
  else
    $(id_image).src=tab_enfants[value.split(':')[1]][2];
}

// Cache le formulaire (bouton "Annuler")
function hideForm(){
  // Autorise le menu ModifRetirer
  afficheModifSuppr=true;

  var id_personne = $('id_personne').value;
  if (id_personne == '')
    $('select_type_new').setStyle('display','none');
  else
    $('select_type_'+id_personne).setStyle('display','none');
  $('prenom').value = '';
  $('nais').value = '';
  $('cp').value = '';
  $('reg').value = '';
  $('id_personne').value = '';
  $('personne_form').setStyle('display','none');

  // si on a modifié le regionid, on remet l'ancien et l'ancien select regime aussi
  if (regionid != personnes[0].regionid) {
    regionid = old_region_id;
    if (last_select_reg){
      $('personne_form').removeChild($('reg'));
      last_select_reg.injectAfter($('label_reg'));
    }
  }

  // bouton ajouter
  $('bloc_btn_ajouter').setStyle('display','block');

}

// Affiche le formulaire
function showForm(id_personne){

  // Interdit le menu "Modifier/Retirer"
  afficheModifSuppr = false;
  // On cache le menu Modifier/retirer
  hideModifSuppr();

  if ($('form_btn_annuler').style.display = 'none')
      $('form_btn_annuler').setStyle('display','block');

  if (typeof(id_personne) != 'undefined'){
    var personne = getPersonne(id_personne);

    // formulaire
    $('prenom').value=personne.prenom;
    $('nais').value=personne.nais;
    if (personne.cp != '') {
      $('cp').value=personne.cp;
      enableCp();
    }
    else{
      disableCp();
    }
    $('reg').value=personne.reg;
    $('id_personne').value=id_personne;

    // select sexe
    $('select_type_'+id_personne).setStyle('display','inline');

  }else{
    // nouvelle personne
    // on affiche le cp seulement si on a personne de rentré encore.
    if (getNbAdultes() == 0){
      enableCp();
    }
    else{
      disableCp();
    }
    $('nais').value = 'jj/mm/aaaa';
  }

  // reinitialise le form pour prendre ou pas le cp en compte
  formcheck.initialize('form_aide_choix');

  $('personne_form').setStyle('display','block');

  // bouton ajouter
  $('bloc_btn_ajouter').setStyle('display','none');

}

// Affiche une erreur supplémentaire via formcheck
function throwError(el,msg){
  formcheck.reinitialize();
  formcheck.form.isValid = false;
  el.isOk = false;
  el.errors.push(msg);
  formcheck.firstError = el;
  formcheck.addError(el);
  formcheck.focusOnError(formcheck.firstError);
}

// Sauve dans l'objet les données du formulaire
function saveForm(e){
  // verif
  // si ok alors on sauve dans l objet et on cache le form
  // sinon alerte
  formcheck.onSubmit(e);

  if (formcheck.form.isValid){
    // On vérifie la date de naissance par sécurité
    if (!isDate($('nais').value)){
      throwError($('nais'),formcheck.options.alerts['date']);
    }else{
      formcheck.reinitialize();
      // On vérifie qu'un adulte a bien plus de 18 ans
      // Ou un enfant - de 27
      var date = new Date();
      var now;
      if (date.getMonth() == 11)// Si on est en décembre, on prend l'année d'après
        now = new Date().getFullYear() + 1;
      else
        now = new Date().getFullYear();
      if (now - parseInt($('nais').value.split('/')[2] -1) < 18 && $('select_type_'+(($('id_personne').value == '')?'new':$('id_personne').value)).value.split(':')[0] == '1'){
        throwError($('nais'),"Un adulte doit avoir plus de 18 ans");
      }
      if (now - parseInt($('nais').value.split('/')[2] -1) > 27 && $('select_type_'+(($('id_personne').value == '')?'new':$('id_personne').value)).value.split(':')[0] == '2'){
        throwError($('nais'),"Vous ne pouvez pas souscrire pour vos enfants de plus de 27 ans");
      }
    }

    // Fonctions non dispo dans formcheck pour mootools 1.1
    if (formcheck.form.isValid && $('cp').value != ''){
      if ($('cp').value.length != 5){
        throwError($('cp'),"Veuillez entrer un code postal valide");
      }
      else
      {
        reqCp();
        return;
      }
    }
    if (formcheck.form.isValid && $('cp').value == ''){
      saveFormPart2();
    }
  }
}

function saveFormPart2()
{
  // TODO : Si alsace moselle : vérifier le régime

  // Si pas dans la base, alert avec le num de tel
  // Si autre régime, alert aussi
  var date = new Date();
  var now;
  if (date.getMonth() == 11)// Si on est en décembre, on prend l'année d'après
    now = new Date().getFullYear() + 1;
  else
    now = new Date().getFullYear();

  if ($('reg').value=='autre'){
    // lightbox
    TB_show('', '#TB_inline?height=100&width=416&inlineId=alert_autre_reg', false, 'smoothbox_rouge');
    formcheck.form.isValid = false;
    alert_blocked = true;
  }else if ($('alert_reg_'+$('reg').value) && $('reg').value == 2 && (($('id_personne').value == '' && getNbPersonnes() >= 1) || $('id_personne').value >=1)){ // cas en dur travailleur non salarié : pas pour le premier entré
    // Autre alerte non bloquante définie dans la bdd
    if (!alert_blocked && formcheck.form.isValid)
      TB_show('', '#TB_inline?height=300&width=416&inlineId=alert_reg_'+$('reg').value, false, 'smoothbox_rouge');
  }else if ($('alert_reg_'+$('reg').value) && $('reg').value != 2 && $('reg').value != 3){
    // Autre alerte non bloquante définie dans la bdd
    if (!alert_blocked && formcheck.form.isValid){
		TB_show('', '#TB_inline?height=300&width=416&inlineId=alert_reg_'+$('reg').value, false, 'smoothbox_rouge');
		if(tab_regimes[$('reg').value][2] == 0){	
    		formcheck.form.isValid = false;
        }
    }
  /*** Alsace Moselle ***/
  //si > 1 personne,  pas du meme régime, il faut faire une alerte, sinon c'est bon
	}else if (getNbPersonnes()>0 && $('alert_reg_3') ){
//			$('alert_reg_'+$('reg').value) && $('reg').value==3 && (($('id_personne').value=='' && getNbPersonnes()>=1) || $('id_personne').value>=1)){
		regime_alerte = false;
		var test_regime = $('reg').value;
		// on compare tous les régimes
		var personne_en_cours = $('id_personne').value;
		if (personne_en_cours==''){
			$A(personnes).each(function(pelem, pindex){
				if (test_regime != pelem.reg){
					regime_alerte = true;
				}
			});
		}else {
			$A(personnes).each(function(pelem, pindex){
				if (pindex!=personne_en_cours){
					if (test_regime != pelem.reg){
						regime_alerte = true;
					}
				}
			});
		}
		if (regime_alerte==true){
			// Autre alerte non bloquante définie dans la bdd
			if (!alert_blocked && formcheck.form.isValid){
				TB_show('', '#TB_inline?height=200&width=416&inlineId=alert_reg_3', false, 'smoothbox_rouge');
				alert_blocked = true;
			}
		}
  }else if(($('id_personne').value == '0' || getNbPersonnes() == 0) && now - parseInt($('nais').value.split('/')[2] -1) > 75){
    // Alerte + de 75 ans
    if (!alert_blocked && formcheck.form.isValid)
      TB_show('', '#TB_inline?height=60&width=416&inlineId=alert_age', false, 'smoothbox_rouge');
  }
  if (good_cp) savePersonne();
  alert_blocked = false;
}

// requete pour le cp --> recupere le region id
function reqCp(e){
  if (((personnes.length >0 && $('cp').value != personnes[0].cp) || personnes.length == 0) && cp_courant != $('cp').value && $('cp').value.test(/^[0-9]{5}$/)){
    // vérifier qu'on l'a en bdd
      var url = 'index.php?option=com_umc_sous&task=checkcp&cp='+$('cp').value;
      // image "traitement en cours"
    var timer3 = showTraitementEnCours();
      new Ajax(
        url,{
              method: 'post',
              onSuccess : function(text,xml){
                hideTraitementEnCours(timer3);
                  if (text != '') {
                    //if (regionid != text) setRegimesOptions(text);
                    old_region_id = regionid; // on le sauve au cas où on cliquerait sur "annuler"
                    regionid=text;
                    good_cp = true;
                    saveFormPart2();
                  }
                  else{
                    // erreur, lightbox
                    TB_show('', '#TB_inline?height=100&width=416&inlineId=aidecp', false, 'smoothbox_rouge');
                    good_cp = false;
                  }
                  cp_courant = $('cp').value;
                }
           }
         ).request();
    } else {
      saveFormPart2();
    }
}

function savePersonne(){
  if (formcheck.form.isValid){
    // on sauve dans l'objet
    var personne_id;
    if ($('id_personne').value == ''){
      personne_id = newPersonne();
      $('id_personne').value = personne_id;

      // maj des id
      $('personne_new').id='personne_'+personne_id;
      $('img_personne_new').id='img_personne_'+personne_id;
      $('select_type_new').name='select_type_'+personne_id;
      $('select_type_new').id='select_type_'+personne_id;

    }else{
      personne_id =$('id_personne').value;
    }
    personnes[personne_id].prenom = $('prenom').value;
    personnes[personne_id].nais = $('nais').value;
    if ($('cp').value != '') {
      var old_region = personnes[personne_id].regionid;
      personnes[personne_id].cp = $('cp').value;
      personnes[personne_id].regionid = regionid;

    }
    personnes[personne_id].reg = $('reg').value;

    var type = $('select_type_'+personne_id).value;
    personnes[personne_id].type = type.split(':')[0];
    personnes[personne_id].sexe = type.split(':')[1];

    hideForm();

    // On range le tableau et les vignettes dans l'ordre
    initVignettes();

    // si premiere entree, on affiche le menu sur la vignette-->ergo
    if (personne_id == 0 && getNbPersonnes() == 1) showModifSuppr(0);

    // On va chercher les tarifs correspondants pour les packs et les garanties
    setTarifs(personnes[personne_id].reg);
    setExemple(personnes[0].reg);
    setEnSavoirPlus();
    // On dégrise les vignettes garanties si elles le sont
    if(etat_initial){
      etat_initial = 0;
      $('knob').setStyle('display','block');
      // On recherche le niveau de départ : par défaut le plus bas
      var niveau_par_defaut = 100;
      $$('.vignette_garantie').each(function(i){
        ungriseGarantie(i.id);
        var niveau_i = getGarantieNiveau(i.id);
        if (niveau_i < niveau_par_defaut) niveau_par_defaut = niveau_i;
      });
      selectGarantiesVignettes(niveau_par_defaut);//vignettes
      majSlide(niveau_par_defaut);//slide

      // on met l event sur le bouton valider final : on a une personne entrée
      $('btn_valider_choix').addEvent('click',validerFormulaire);
    }
    listRembEx(personnes[0].reg);
    // push packs
    pushPacks();
  }
}

// load les tarifs
function setTarifs(regime){

	var url = 'index.php?option=com_umc_sous&task=load_tarifs&annee='+annee_courante+'&regime_id='+regime;
	timer2 = showTraitementEnCours();
	new Ajax(
			url,{
				method: 'post',
				onSuccess : function(text,xml){
				majTarifs(text,xml) ;
				$$('.vignette_garantie').each(function(i){
					var bloc_garantie = i.getParent();
					bloc_garantie.getChildren().each(function (lien){
						if (lien.hasClass('en_savoir_plus')){
							lien.setStyle('visibility','visible');
						}
					});
				});
			}
			}
	).request();
}

// Met à jour les tableau tarifs
function majTarifs(text,xml){
  hideTraitementEnCours(timer2);
  var objectTarifs = Json.evaluate(text);
  tab_tarifs_garanties = new Array();
  tab_tarifs_packs = new Array();
  for ( var id_g in objectTarifs.garanties ){
      tab_tarifs_garanties[id_g] = objectTarifs.garanties[id_g].prix;
    }
  for ( var id_p in objectTarifs.packs ){
      tab_tarifs_packs[id_p] = objectTarifs.packs[id_p].prix;
    }

  // maj des tarifs sur les vignettes
  majTarifsGaranties();
  majTarifsPacks();

  // maj du panier
  majTarifsPanier();
}

function setExemple(regime){
	$regime_value = $('txt_etoile').getChildren();
	$regime_value.setText(regime_name[regime]);
}

function isDate(d) {
   // Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
   // Par Romuald

   if (d == "") // si la variable est vide on retourne faux
     return false;

   e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");

   if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
     return false; // Si pas bon, retourne faux

   // On sépare la date en 3 variables pour v�rification, parseInt() converti du texte en entier
   j = parseInt(d.split("/")[0], 10); // jour
   m = parseInt(d.split("/")[1], 10); // mois
   a = parseInt(d.split("/")[2], 10); // ann�e

   // Si l'année n'est composée que de 2 chiffres on complète automatiquement
   if (a < 1000) {
     if (a < 89) a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
     else a+=1900;
   }

   // D�finition du dernier jour de f�vrier
   // Ann�e bissextile si annn�e divisible par 4 et que ce n'est pas un si�cle, ou bien si divisible par 400
   if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
   else fev = 28;

   // Nombre de jours pour chaque mois
   nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

   // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
   return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}

// Affiche le menu "Modifier/Retirer"
function showModifSuppr(id_personne){

  if (afficheModifSuppr && id_personne < personnes.length){

    if(id_personne == 0 && getNbAdultes() == 1) $('menu_aide_retirer').setStyle('display','none');
    else $('menu_aide_retirer').setStyle('display','block');

    var left = $('personne_'+id_personne).getLeft() - $('global_aide_choix').getLeft() + 60;
    $('menu_aide').setStyle('left',left+'px');
    $('menu_aide').setStyle('display','block');

    // on sauve la personne courante
    menu_aide_personne_courante = id_personne;
  }
}

// Cache le menu "Modifier/Retirer"
function hideModifSuppr(){

  $('menu_aide').setStyle('display','none');

}

// Active / désactive le champ CP
function enableCp(){
  $('cp').disabled=false;
  $('cp').addClass("validate['required']");
  $('bloc_cp').setStyle('display','block');
}
function disableCp(){
  $('cp').disabled=true;
  $('cp').className = "";
  $('bloc_cp').setStyle('display','none');
}


/* ************************* FIN PARTIE PERSONNES *********************** */


/* ************************* PARTIE GARANTIES *********************** */

// Sélectionne les vignettes garanties en fonction d'un niveau (appel apres un slide)
function selectGarantiesVignettes(niveau){
	unselectGarantiesVignettes();
	$$('.vignette_garantie').each(function(i){
		var test = i.id;
		if (getGarantieNiveau(i.id) == niveau){
			var opacity = i.getStyle('opacity');
			if (opacity<1){
				selectGarantiesVignettes(niveau+1);
			}
			else{
				selectGarantieVignette(i.id);
			}
		}
	});
}

// Désélectionne toutes les vignettes garanties
function unselectGarantiesVignettes(){

  $$('.vignette_garantie').each(function(i){
    unselectGarantieVignette(i.id);
  });

}

// Sélectionne une vignette garantie
function selectGarantieVignette(node_id){
  $(node_id).addClass('vignette_garantie_on');
  $(node_id).setStyle('background-image','');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('display','none');

  // mise a jour de la valeur
  setGarantieToCart(getGarantieId(node_id));

  majAfterGarantie();

}

// Désélectionne une vignette garantie
function unselectGarantieVignette(node_id){

  $(node_id).removeClass('vignette_garantie_on');
  var id_garantie = getGarantieId(node_id);
  if (tab_garanties[id_garantie][1]) $(node_id).setStyle('background-image','url('+tab_garanties[id_garantie][1]+')');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('display','inline');

  // mise a jour de la valeur
  //setGarantieToCart("");

}

// Met à jour le slide en fonction d'un niveau
function majSlide(niveau){
  if (niveau>0) $('slider').getElement('.knob').setStyle('top',niveau2slide[niveau]+"px");
}

// Maj à faire lorsqu'on modifie une garantie
function majAfterGarantie(){

  var id_garantie = getGarantie();

  //déselect tous les packs
  unselectAllPacksVignettes();

  if (tab_garanties[id_garantie][2].length == 0) $('nopacks').setStyle('display','block');
  else $('nopacks').setStyle('display','none');

  $$('.vignette_pack').each(function(i){
    var id_pack = getPackId(i.id);
    if (tab_garanties[id_garantie][2].indexOf(parseInt(id_pack)) == -1){
      grisePack(i.id); //griser les incompatibles
      if(isInCart(getPackId(i.id))) removePackFromCart(getPackId(i.id)); //retirer du panier les packs incompatibles
    }else{
      ungrisePack(i.id);
      if (isInCart(getPackId(i.id))) selectPackVignette(i.id); //select ceux dans le panier qui restent
    }
  });

  // exemples de remboursements
  listRembEx(personnes[0].reg);


   // push packs
   pushPacks();

}

// clic sur les textes de graduations
function eventGraduations(niveau){
  selectGarantiesVignettes(niveau);
  majSlide(niveau);
  return false;
}

// Grise une garantie
function griseGarantie(node_id){
  $(node_id).setStyle('opacity','0.5');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('cursor','auto');
  if ($$('#'+node_id+' .vignette_garantie_prix')) $$('#'+node_id+' .vignette_garantie_prix').setStyle('visibility','hidden');
  $(node_id).setStyle('cursor','default');
  tab_garanties[getGarantieId(node_id)][0] = 0;
}

// Dégrise une garantie
function ungriseGarantie(node_id){
  $(node_id).setStyle('opacity','1');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('cursor','pointer');
  if ($$('#'+node_id+' .vignette_garantie_prix')) $$('#'+node_id+' .vignette_garantie_prix').setStyle('visibility','visible');
  $(node_id).setStyle('cursor','pointer');
  tab_garanties[getGarantieId(node_id)][0] = 1;

  //majTarifsGarantie(node_id);
}

////Grise le lien en savoir plus d'une garantie
//function griseGarantieLien(node_id){
//	$(node_id).getChildren().each(function (liens){
//		if (liens.hasClass('en_savoir_plus')){
//			liens.setStyle('visibility','hidden');
//		}
//	});
//}

// maj les tarifs garanties en fonction des personnes entrées
function majTarifsGaranties(){
  $$('.vignette_garantie').each(function(i){
    var prix = formatPrix(getTarifGarantie(getGarantieId(i.id)))
    /*** On masque la garantie qui n'a pas de prix ***/
    var bloc_garantie = i.getParent();
    if (prix=="NaN") {
      griseGarantie(i.id);
//			var reglette = $$('#graduation_map area[alt=Faible]');
//			if (reglette.length>0){
//			reglette[0].removeProperty('onclick');
//			reglette[0].removeProperty('href');
//			}
//			griseGarantieLien(bloc_garantie);
    }
    else{
      $E('#'+i.id+' .vignette_garantie_prix span').innerHTML = prix;
      ungriseGarantie(i.id);
//			bloc_garantie.getChildren().each(function (lien){
//				if (lien.hasClass('en_savoir_plus')){
//					lien.setStyle('visibility','visible');
//				}
//			});
    }
  });
}

// renvoie le bon tarif garantie
function getTarifGarantie(id){
  if(tab_tarifs_garanties.length>0){
    var tarif = tab_tarifs_garanties[parseInt(id)];
    if (!tarif)
      tarif = "--";
  }else var tarif = "--";
  return tarif;
}

// Génération du lien en savoir plus
function setEnSavoirPlus(){
	// on récupère le régime de l'assuré principal
	var regime = personnes[0].reg;
	// on génère l'url pour chaque garantie
	var bloc = $$('.bloc_garantie');
	var firstChild = bloc.getFirst();
	firstChild.each(function(fils){
		var id = fils.getProperty('id');
		var garantie_id  = getGarantieId(id);
		var url = 'index.php?option=com_umc_sous&task=get_lightbox&regime_id='+regime+'&garantie='+garantie_id;
		new Ajax(
				url,{
					method: 'post',
					onSuccess : function(text,xml){
					var ensavoirplus = fils.getParent().getLast()
						if (text.contains('true')){
							var a = ensavoirplus.getLast();
							var href= base_url+'index.php?option=com_umc_sous&view=lightbox&type=garantie&id='+garantie_id+'&regime_id='+regime+'&height=500&width=570&tmpl=component&keepThis=true&TB_iframe=true';
							a.href = href;
						}
						else {
							ensavoirplus.setStyle('visibility', 'hidden');
						}
					}
				}
		).request();
	});
}

/* ************************* FIN PARTIE GARANTIES *********************** */


/* ************************* PARTIE PACKS *********************** */

// Sélectionne un pack
function selectPackVignette(node_id){
  $(node_id).addClass('vignette_pack_on');
  $(node_id).setStyle('background-image','');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('display','none');
  if ($$('#'+node_id+' .btn_retirerp')) $$('#'+node_id+' .btn_retirerp').setStyle('display','inline');

  // mise a jour de la valeur
  var pack_id = getPackId(node_id);
  if (!isInCart(pack_id)) addPackToCart(pack_id);

  majPack(node_id);
}

// Désélectionne un pack
function unselectPackVignette(node_id){
  $(node_id).removeClass('vignette_pack_on');
  var id_pack = getPackId(node_id);
  if (tab_packs[id_pack][1]) $(node_id).setStyle('background-image','url('+tab_packs[id_pack][1]+')');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('display','inline');
  if ($$('#'+node_id+' .btn_retirerp')) $$('#'+node_id+' .btn_retirerp').setStyle('display','none');

  // mise a jour de la valeur
  //emovePack(getPackId(node_id));
}

// Déselectionne tous les packs
function unselectAllPacksVignettes(){
  $$('.vignette_pack').each(function(i){
    unselectPackVignette(i.id);
  });
}

// Grise un pack
function grisePack(node_id){
  $(node_id).setStyle('opacity','0.5');
  if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('cursor','auto');
  if ($$('#'+node_id+' .vignette_pack_prix')) $$('#'+node_id+' .vignette_pack_prix').setStyle('visibility','hidden');
  if ($$('#'+node_id+' .vignette_pack_savoirplus')) $$('#'+node_id+' .vignette_pack_savoirplus').setStyle('visibility','hidden');
  $(node_id).setStyle('cursor','default');
  tab_packs[getPackId(node_id)][0] = 0;
}

// D�grise un pack
function ungrisePack(node_id){
  // Avant de dégriser un pack on s'assure qu'il est compatible avec tous ceux dans le panier !
  // et aussi avec la garantie choisie !
  var compatible = 1;
  mes_packs.each(function(j){
    if (!areCompatibles(getPackId(node_id),j)) compatible= false;
  });
  if (compatible && tab_garanties[getGarantie()][2].indexOf(parseInt(getPackId(node_id))) > -1) {

    $(node_id).setStyle('opacity','0.99'); // Google Chrome aime pas opacity=1 il fait disparaitre le bloc
    if ($$('#'+node_id+' .btn_choisir')) $$('#'+node_id+' .btn_choisir').setStyle('cursor','pointer');
    if ($$('#'+node_id+' .vignette_pack_prix')) $$('#'+node_id+' .vignette_pack_prix').setStyle('visibility','visible');
    if ($$('#'+node_id+' .vignette_pack_savoirplus')) $$('#'+node_id+' .vignette_pack_savoirplus').setStyle('visibility','visible');
    $(node_id).setStyle('cursor','pointer');
    tab_packs[getPackId(node_id)][0] = 1;

  }
}

// maj pour verifier les packs incompatibles TODO
function majPack(node_id){
  $$('.vignette_pack').each(function(i){
    var id_pack = getPackId(i.id);
    if (id_pack != getPackId(node_id)){
      if (!areCompatibles(getPackId(node_id),id_pack)){
        if(isInCart(getPackId(i.id))) removePackFromCart(getPackId(i.id)); //retirer du panier les packs incompatibles
        unselectPackVignette(i.id);
        grisePack(i.id); //griser les incompatibles
      }else{
        ungrisePack(i.id);
      }
    }
  });
}

// Indique si deux packs sont compatibles entre eux
function areCompatibles(id1,id2){
  return (tab_packs[id1][2].indexOf(id2) == -1 && tab_packs[id2][2].indexOf(id1) == -1);
}

// maj les tarifs en fonction des personnes et de la garantie
function majTarifsPacks(){
  $$('.vignette_pack').each(function(i){
    $E('#'+i.id+' .vignette_pack_prix span').innerHTML = formatPrix(getTarifPack(getPackId(i.id)));
  });
}

// renvoie le tarif d'un pack
function getTarifPack(id){
  if (tab_tarifs_packs.length > 0){
    var tarif = tab_tarifs_packs[parseInt(id)];
    if (tarif){
      var tab = tarif.toString().split('.');
      if (tab[1] == '00') tarif = tab[0];
    }
    else tarif = "--";
  }else var tarif = "--";
  return tarif;
}

// Push packs, appelé quand on valide une personne
function pushPacks(){

  //check personne +75 ans si oui pas possibilite de pack compl
  var annee_naissance_sous = personnes[0].nais.substr(6,9);
  if(annee_courante-annee_naissance_sous-1 >= 75)
  {
    hideAllBullePush();
    $$('.vignette_pack').each(function(i){
      grisePack(i.id);
      if(isInCart(getPackId(i.id))) removePackFromCart(getPackId(i.id));
      unselectPackVignette(i.id);
    });
  }
  else
  {
    $$('.vignette_pack').each(function(i){
      ungrisePack(i.id);
    });
    hideAllBullePush();
      var now = new Date().getFullYear();

      if (getNbEnfants()>0){

          // push famille
          push_famille.each(function(i){
            bullePush(i);
          });

      }else if(now - parseInt(getPersonne(0).nais.split('/')[2]) >= 65 || (getPersonne(1) && now - parseInt(getPersonne(1).nais.split('/')[2]) >= 65)){

          // push senior
          push_senior.each(function(i){
            bullePush(i);
          });

      }else{

          // push bien etre
          push_bienetre.each(function(i){
            bullePush(i);
          });

      }

        // push reserve +
        push_plus.each(function(i){
          bullePush(i);
        });
  }
}

// bulle push pack
function bullePush(id_pack){
  if(tab_packs[id_pack][0]){ // si le pack est grisé, pas de push !
    var bubulle = new Element('div',{'id':'bubulle_'+id_pack,'class':'bulle_push'});
    bubulle.injectTop($('mes_packs'));
    var left = $('pack_'+id_pack).getLeft()-$('global_aide_choix').getLeft()+75;
    bubulle.setStyle('left',left+'px');
    var top = $('pack_'+id_pack).getTop() - $('mes_packs').getTop() - 45 ;
    bubulle.setStyle('margin-top',top+'px');
    var bubulle_top = new Element('div',{'class':'bulle_push_top'});
    bubulle_top.injectInside(bubulle);
    var bubulle_middle = new Element('div',{'class':'bulle_push_middle'});
    bubulle_middle.injectInside(bubulle);
    var bubulle_bottom = new Element('div',{'class':'bulle_push_bottom'});
    bubulle_bottom.injectInside(bubulle);

    var fermer = new Element('img',{'src':root_url+'templates/tpl_umc/images/aidechoix/aide_bulle_croix.png','alt':'Fermer'});
    fermer.addEvent('click',function(e){hideBullePush(id_pack)});
    fermer.injectInside(bubulle_middle);

    bubulle_middle.appendText('Nous vous recommandons');
  }
}

// cache une bulle
function hideBullePush(id_pack){
  $('bubulle_'+id_pack).parentNode.removeChild($('bubulle_'+id_pack));
}

// cache toutes les bulles push
function hideAllBullePush(){
  $$('.bulle_push').each(function(i){
    i.parentNode.removeChild(i);
  });
}

/* ************************* FIN PARTIE PACKS *********************** */




/* ************************* Debut PARTIE PANIER *********************** */

// Ajoute une garantie au panier
function setGarantieToCart(id){
  setGarantie(id);
  // affichage
  ////console.log('addgarantie');
  initAffPanier();
}

// Ajoute un pack au panier
function addPackToCart(id){
  addPack(id);

  // affichage
  //console.log('addPackToCart');
  initAffPanier();
  majAffRembex();
}

// event au click sur la vignette ou le bouton choisir
function eventClickPack(e){
  new Event(e).stop();

  if (this.hasClass('btn_choisir') || this.hasClass('btn_retirerp'))
    var vignette = this.parentNode;
  else
    var vignette = this;
  if (tab_packs[getPackId(vignette.id)][0]) {
    if (!isInCart(getPackId(vignette.id)))
      selectPackVignette(vignette.id);
    else{
      var id_pack = getPackId(vignette.id);
      removePackFromCart(id_pack);
      unselectPackVignette('pack_'+id_pack);
      $$('.vignette_pack').each(function(i){
        if (!areCompatibles(getPackId(i.id),id_pack)){
          ungrisePack(i.id); // le test "est compatible avec les autres du panier" sera fait dedans
        }
      });
      majAffRembex();
    }
  }
}


// Enleve un pack au panier
function removePackFromCart(id){
  removePack(id);

  // affichage
  //console.log('removePackFromCart');
  initAffPanier();
}

function initAffPanier(){
//console.log('initpanier');

  // On efface l'ancien panier
  if ($('table_panier')) $('mon_panier').removeChild($('table_panier'));
  var year = new Date().getFullYear();
  var total = 0;

  var table = new Element('table',{'id':'table_panier','cellpadding': '0','cellspacing':'0','border':'0'});
  table.injectInside($('mon_panier'));

  // Garantie
  var id_garantie = getGarantie();

  if (id_garantie != ''){
    var tr_garantie = new Element('tr',{'id':'tr_garantie'});
    tr_garantie.injectInside($('table_panier'));
    var td_garantie1 = new Element('td',{'id':'desc_garantie','class': 'desc'});
    td_garantie1.injectInside($('tr_garantie'));
    td_garantie1.appendText('Niveau');
    new Element('br').injectInside($('desc_garantie'));
    td_garantie1.appendText('de garantie');

    var td_garantie2 = new Element('td',{'id':'content_garantie','class': 'content'});
    td_garantie2.injectInside($('tr_garantie'));
    td_garantie2.appendText(tab_garanties[id_garantie][3]); // TAOPRIMO
    new Element('br').injectInside($('content_garantie'));
    var em = new Element('em');
    em.appendText(tab_garanties[id_garantie][4]); // Garantie essentielle
    em.injectInside($('content_garantie'));
    new Element('br').injectInside($('content_garantie'));
    var img_puce = new Element('img',{'src': root_url+'images/communs/puce.gif','alt':'>'});
    img_puce.injectInside($('content_garantie'));
    td_garantie2.appendText(' ');

    // on récupère le régime de l'assuré principal
    var regime = personnes[0].reg;
//    console.log(tab_garanties[id_garantie][5]);

    var a_savoir = new Element('a',{'href': base_url+'index.php?option=com_umc_sous&view=lightbox&type=garantie&id='+id_garantie+'&regime_id='+regime+'&height=500&width=570&tmpl=component&keepThis=true&TB_iframe=true','class':'smoothbox'});
    a_savoir.appendText('En savoir plus');
    a_savoir.injectInside($('content_garantie'));

    var td_garantie3 = new Element('td',{'class': 'price'});
    var tarif_garantie = new Element('span',{'id': 'tarif_'+id_garantie});
    var prixg = getTarifGarantie(id_garantie);
    tarif_garantie.appendText(formatPrix(prixg));
    if (prixg != '--') total += parseFloat(prixg);
    tarif_garantie.injectInside(td_garantie3);
    td_garantie3.appendText(' \u20AC / mois');
    td_garantie3.injectInside($('tr_garantie'));

    new Element('tr',{'id':'tr_garantie2'}).injectInside($('table_panier'));
    new Element('td').injectInside($('tr_garantie2'));
    new Element('td').injectInside($('tr_garantie2'));
    var td_plus = new Element('td',{'class':'plus'});
    if (getNbPacks() >0){
      td_plus.appendText('+');
    }else{
      td_plus.appendText('=');
    }
    td_plus.injectInside($('tr_garantie2'));

    // Packs
    var cpt = getNbPacks();
    mes_packs.each(function(i){
      var tr_pack = new Element('tr',{'id':'tr_pack_'+i,'class':'tr_pack'});
      tr_pack.injectInside($('table_panier'));
      var td_pack1 = new Element('td',{'class': 'desc'});
      td_pack1.appendText('Pack compl\351mentaire');
      td_pack1.injectInside($('tr_pack_'+i));

      var td_pack2 = new Element('td',{'id':'content_pack'+i,'class': 'content'});
      td_pack2.injectInside($('tr_pack_'+i));
      td_pack2.appendText(tab_packs[i][3]); // TAOPRIMO
      new Element('br').injectInside($('content_pack'+i));
      var em = new Element('em');
      em.appendText(tab_packs[i][4]); // Garantie essentielle
      em.injectInside($('content_pack'+i));
      new Element('br').injectInside($('content_pack'+i));
      var img_puce = new Element('img',{'src': root_url+'images/communs/puce.gif','alt':'>'});
      img_puce.injectInside($('content_pack'+i));
      td_pack2.appendText(' ');

      var a_savoir = new Element('a',{'href': tab_packs[i][5],'class':'smoothbox'});
      a_savoir.appendText('En savoir plus');
      a_savoir.injectInside($('content_pack'+i));

      var td_pack3 = new Element('td',{'class': 'price'});
      var tarif_pack = new Element('span',{'id': 'tarif_pack_'+i});
      var prixp = getTarifPack(i);
      tarif_pack.appendText(formatPrix(prixp));
      if (prixp != '--') total += parseFloat(prixp);
      tarif_pack.injectInside(td_pack3);
      td_pack3.appendText(' \u20AC / mois');
      td_pack3.injectInside($('tr_pack_'+i));

      new Element('tr',{'id':'tr_pack_'+i+'_2'}).injectInside($('table_panier'));
      var td_retirer = new Element('td',{'id':'td_retirer_'+i});
      td_retirer.injectInside($('tr_pack_'+i+'_2'));
      var img_retirer = new Element('img',{'class': 'retirer','id':'retirer_'+i,'src': root_url+'images/aidechoix/btn_retirer.gif','alt':'Retirer'});
      img_retirer.injectInside($('td_retirer_'+i));
      new Element('td').injectInside($('tr_pack_'+i+'_2'));
      var td_plus = new Element('td',{'class':'plus'});
      if (--cpt >0){
        td_plus.appendText('+');
      }else{
        td_plus.appendText('=');
      }
      td_plus.injectInside($('tr_pack_'+i+'_2'));
    });
  }

  // Total
  var tr_total = new Element('tr',{'id':'tr_total'});
  tr_total.injectInside($('table_panier'));
  var td_total1 = new Element('td',{'class': 'tarif_mensuel','colspan':'2'});
  td_total1.appendText('Mon tarif mensuel : ');
  td_total1.injectInside($('tr_total'));
  var td_total2 = new Element('td',{'class': 'price price_mensuel'});
  var tarif_total = new Element('span',{'id': 'tarif_total'});
  tarif_total.appendText(total?formatPrix(total):'--');
  tarif_total.injectInside(td_total2);
  td_total2.appendText(' \u20AC / mois *');
  td_total2.injectInside($('tr_total'));

  $('mon_panier').innerHTML += ''; // forcer le rafraichissement de l'affichage de la div sous IE qui ne le fait pas tout seul

  TB_init(); // init smoothbox

  $$('img.retirer').each(function(i){
      i.addEvent('click',eventClickPack);
  });
}

// Met à jour les tarifs dans le panier
function majTarifsPanier(){
  var span = $E('#tr_garantie .price span');
  var prixg = getTarifGarantie(span.id.split('_')[1]);
  var prix = (prixg != '--')?parseFloat(prixg):0;
  span.innerHTML = formatPrix(prixg);
  $$('.tr_pack .price span').each(function(i){
    var prixp = getTarifPack(i.id.split('_')[2]);
    if (prixp != '--') prix += parseFloat(prixp);
    i.innerHTML = formatPrix(prixp);
  });
  $('tarif_total').innerHTML = prix?formatPrix(prix):'--';
  $$('img.retirer').each(function(i){
      i.addEvent('click',eventClickPack)
  });
}

/* ************************* FIN PARTIE PANIER *********************** */


/* ************************* PARTIE REMBEX *********************** */

// requete pour récup les exemples de remboursements
function listRembEx(regime){
  var url = 'index.php?option=com_umc_sous&task=list_rembex&regime_id='+regime;
    var timer = showTraitementEnCours();
    new Ajax(
      url,{
            method: 'post',
            onSuccess : function(text,xml){
              hideTraitementEnCours(timer);
          objectRembex = Json.evaluate(text);
        tab_rembex = new Array();
        objectRembex.each(function(i){
          if (typeof(tab_rembex[i.nb_pack]) == 'undefined') tab_rembex[i.nb_pack] = new Array();
          var liste_packs = (i.liste_packs)?i.liste_packs.split(','):new Array();
          tab_rembex[i.nb_pack][tab_rembex[i.nb_pack].length] = new Array(i.name, i.montant_depense_reelle,i.montant_secu,i.montant_umc, liste_packs);
        });
        majAffRembex();
            }
         }
       ).request();
}

// Met à jour l'affichage
function majAffRembex(){
  if ($('table_rembex')) $('rembex').removeChild($('table_rembex'));
  var nbpacks = getNbPacks();

  if (typeof(tab_rembex[nbpacks]) != 'undefined' && tab_rembex[nbpacks].length >0){
    var table = new Element('table',{'id':'table_rembex','cellpadding': '0','cellspacing':'0','border':'0'});
     table.injectInside($('rembex'));

     var tr = new Element('tr');
      tr.injectInside(table);
      new Element('td').injectInside(tr);
      var td = new Element('td',{'class': 'remboursement_th'});
      td.appendText('D\351pense r\351elle');
      td.injectInside(tr);
      td = new Element('td',{'class': 'remboursement_th','colspan':'2'});
      td.appendText('Remboursement : ');
      new Element('br').injectInside(td);
      td.appendText('R\351gime obligatoire ');
      var span = new Element('span');
      span.injectInside(td);
      span.appendText('+  Mutuelles UMC');
      td.injectInside(tr);

    count_rembex = 0;

      tab_rembex[nbpacks].each(function(i){
        var flag = true;
        i[4].each(function(ii){
          flag &= isInCart(ii);
        });
        if (flag) { // si tous les packs du rembex sont dans le panier alors c est bon
          newLineRembex(i,table);
          count_rembex++;
        }
      });

      if (count_rembex == 0){// si aucun rembex alors on affiche ceux avec zero pack
        tab_rembex[0].each(function(ii){
          newLineRembex(ii,table);
        });
      }
    }
    $('rembex').innerHTML += ''; // forcer le rafraichissement de l'affichage de la div sous IE qui ne le fait pas tout seul
}

// new line pour rembex
function newLineRembex(i,table){
  tr = new Element('tr');

     tr.injectInside(table);
     td = new Element('td',{'class': 'remboursement_th remboursement_name'});
     td.appendText(i[0]);
     td.injectInside(tr);
     td = new Element('td',{'class': 'remboursement_depreelle'});
     td.appendText(formatPrix(i[1])+' \u20AC');
     td.injectInside(tr);

     td = new Element('td',{'class': 'remboursement_jauge'});
     td.injectInside(tr);
     var div_jauge = new Element('div',{'class': 'jauge'});
     new Element('div',{'class': 'jauge_left'}).injectInside(div_jauge);
     var div_jauge_gris = new Element('div',{'class': 'jauge_gris'});
     div_jauge_gris.injectInside(div_jauge);
     var total = parseFloat(i[2])+parseFloat(i[3]);
     var w = 55*parseFloat(i[2])/total;
     div_jauge_gris.setStyle('width',w+'px');
     var div_jauge_vert = new Element('div',{'class': 'jauge_vert'});
     div_jauge_vert.setStyle('width',(55-w)+'px');
     div_jauge_gris.injectInside(div_jauge);
     new Element('div',{'class': 'jauge_sep'}).injectInside(div_jauge);
     div_jauge_vert.injectInside(div_jauge);
     new Element('div',{'class': 'jauge_right'}).injectInside(div_jauge);
     div_jauge.injectInside(td);

     td = new Element('td',{'class': 'remboursement_right'});
     td.appendText(formatPrix(i[2])+' + ');
     span = new Element('span');
     span.injectInside(td);
     span.appendText(formatPrix(i[3]));
     td.appendText(' = '+formatPrix(total) + ' \u20AC');
     td.injectInside(tr);
}
/* ************************* FIN PARTIE REMBEX *********************** */



/* ************************* VALIDATION FINALE *********************** */
function validerFormulaire(event){
  var hasGoodReg = true;
  var autrepb = true;
  var amError = false;
  var hasAM = false;
  personnes.each(function(i){
    if (typeof(tab_regimes[i.reg]) == 'undefined') hasGoodReg = false;
    else if (i.reg == alsacemoselle) {
      if (!hasAM && i.id_personne > 0) amError = true;
      hasAM = true;
    }
    else if (i.reg != alsacemoselle && hasAM) amError = true;
    if (i.nais == '') autrepb = false;
  });
  if (!amError && autrepb && hasGoodReg && getNbAdultes()>0 && personnes[0].cp != '' && personnes[0].regionid != '' && getGarantie() != ''){
    //alert('Vous avez validé et tt est ok !');
    $('form_aide_choix').action = last_action;
    $('form_aide_choix').submit();
  }else{
    if (!hasGoodReg){
      $('alert_finale').innerHTML = "<p>Veuillez vérifier les régimes que vous avez entrés : certains sont vides.</p>";
      TB_show('', '#TB_inline?height=80&width=416&inlineId=alert_finale', false, 'smoothbox_rouge');
        }else if (amError){
          $('alert_finale').innerHTML = "<p>Veuillez vérifier les régimes que vous avez entrés : si un adhérent dépend du régime Alsace Moselle, tous les autres doivent en dépendre aussi.</p>";
      TB_show('', '#TB_inline?height=80&width=416&inlineId=alert_finale', false, 'smoothbox_rouge');
        }
        else {
          $('alert_finale').innerHTML = "<p>Veuillez vérifier les informations que vous avez entrées.</p>";
      TB_show('', '#TB_inline?height=80&width=416&inlineId=alert_finale', false, 'smoothbox_rouge');
        }
  }
}
/* ************************* FIN VALIDATION FINALE *********************** */

/* ************************* OPERATIONS SUR LES OBJETS DU FORMULAIRE *********************** */

// crée une nouvelle personne
function newPersonne(){
  var id = personnes.length;
  personnes[id] = {prenom:'',nais:'',cp:'',reg:'',type:'',sexe:'',regionid:'',id_personne:id};
  return id;
}

// Supprime une personne
function delPersonne(i){
  personnes[i]='';
}

// renvoie le nb de personnes
function getNbPersonnes(){
  return personnes.length;
}

// retourne le nombre d'adultes
function getNbAdultes(){
  var cpt = 0;
  personnes.each(function(i){
    if (i.type == '1') cpt++;
  });
  return cpt;
}

// retourne le nombre d'enfants
function getNbEnfants(){
  var cpt = 0;
  personnes.each(function(i){
    if (i.type == '2') cpt++;
  });
  return cpt;
}

// renvoie une personne existante
function getPersonne(i){
  return personnes[i];
}

// Trie le tableau des personnes : Ap, A, Exn
function sortPersonnes(){
  var newPersonnes = new Array();
  personnes.each(function(i){
    if (i != ''){ // n'a pas été supprimé
      if (i.cp != ''){
        // souscripteur principal est le seul à avoir le cp rempli
        i.id_personne = 0;
        newPersonnes[0] = i;
      }else if(i.type == '1'){
        i.id_personne = 1;
        newPersonnes[1] = i;
      }else{
        // enfant
        var nbAdultes = getNbAdultes();
        if (nbAdultes < newPersonnes.length) {
          i.id_personne = newPersonnes.length;
          newPersonnes[newPersonnes.length] = i;
        }else{
          // on n'a pas entré et/ou réservé la place pour tous les adultes
          if (nbAdultes == 1) {
            i.id_personne = 1;
            newPersonnes[1] = i;
          }else{
            i.id_personne = 2;
            newPersonnes[2] = i;
          }
        }
      }
    }
  });
  personnes = newPersonnes;
}


// Met à jour la garantie
function setGarantie(id){
  garantie=id;
  fillCookieAchat();
}

// renvoie la garantie
function getGarantie(){
  return garantie;
}

// Ajoute un pack
function addPack(id){
  mes_packs.push(id);
  fillCookieAchat();
}

// Enlève un pack
function removePack(id){
  var key = mes_packs.indexOf(id);
  if (key != -1) {
    mes_packs.splice(key,1);
    fillCookieAchat();
  }
}

// indique si un pack est dans le panier
function isInCart(id){
  return (mes_packs.indexOf(id) != -1);
}

// renvoie la garantie
function getNbPacks(){
  return mes_packs.length;
}

// rempli le cookie avec le tableau personnes
function fillCookiePersonne(){
  Cookie.remove('personnes');
  Cookie.set('personnes', Json.toString(personnes),{path:'/',duration:30});
}

// rempli le cookie avec la garantie et les packs
function fillCookieAchat(){
  Cookie.remove('achat');
  Cookie.set('achat', Json.toString({garantie:getGarantie(),packs:mes_packs}),{path:'/',duration:30});
}

/* ************************* FIN OPERATIONS SUR LES OBJETS DU FORMULAIRE *********************** */


