﻿var Combinaison={
prixListeners:[],
addPrixListener:function(f){
this.prixListeners[this.prixListeners.length]=f;
},
init:function(){
   var st_id=document.getElementById("combinaisons_status_choisi").value;
   var stc=document.getElementById("rb$"+st_id);
    if(stc){stc.checked=true;
 	this.afficher(st_id);}
 	this.calPrix();
   
},
 ser_ch:null,
  start:function(ev){
    var tar = Event.getTarget(ev);
    var parent,grparent;
    while(tar.id !='combinaisons' ) {
          var s_id=tar.id;
           if(s_id){s_id=s_id.split('$');};
            if (Dom.hasClass(tar,'chkbox')) {
               Combinaison.toggle(tar);
               if(tar.checked)
                 Combinaison.grouper(tar);
                Combinaison.calPrix();
               break;
            }else
             if (Dom.hasClass(tar,'radiob') ) {
              Combinaison.afficher(s_id[1]);
                Combinaison.calPrix();
              break;
            }else
             if (Dom.hasClass(tar,'p-tax') ) {
                Combinaison.toggle(YAHOO.util.Dom.getFirstChild(tar));
               Combinaison.captionTax(YAHOO.util.Dom.getFirstChild(tar));
                Combinaison.calPrix();
              break;
            }
           tar = tar.parentNode;
        }
       Event.stopPropagation(ev);
 },
 toggle:function(tar){
   if(tar.checked)
    Dom.addClass(tar.parentNode.parentNode,"checked");
   else
    Dom.removeClass(tar.parentNode.parentNode,"checked");
 },
 captionTax:function(tar){
 var s_ne="ne ",s_pas="pas ",s_de="Déc";
  if(!tar.checked){
         s_ne="";s_pas="";s_de="C";
  }
   var caption=s_de+"ochez si vous "+s_ne+"payez "+s_pas+"la "+((tar.id=="combinaisons_sitps")?"TPS":"TVQ");
   tar.parentNode.title=caption;
   YAHOO.util.Dom.getNextSibling(tar).innerHTML=caption;
 },
affiche_id:null,
afficher:function(st_id){
  if(this.affiche_id!==null){
     Dom.addClass(document.getElementById("sv$"+this.affiche_id),"cacher");
      Combinaison.toggle(document.getElementById("rb$"+this.affiche_id));
    }
    Dom.removeClass(document.getElementById("services"),"cacher");
    Combinaison.toggle(document.getElementById("rb$"+st_id));
    Dom.removeClass(document.getElementById("sv$"+st_id),"cacher");
  this.affiche_id=st_id;
  document.getElementById("combinaisons_status_choisi").value=st_id;
},
valider:function(){
var valide_s=true;
if(this.ser_ch && this.ser_ch.length!=0){
  document.getElementById("combinaisons_verifier_ser").className="cacher";
}else{
    document.getElementById("combinaisons_verifier_ser").className="";
    valide_s=false;
  }
return valide_s;
},
calPrix:function(){
  this.ser_ch=new Array();
  var prix=0,tps=0,tvq=0,total=0,total_ttc=0;
     p_tps=document.getElementById("combinaisons_txTps").innerHTML,p_tvq=document.getElementById("combinaisons_txTvq").innerHTML,
     ch_tps=document.getElementById("combinaisons_sitps"),ch_tvq=document.getElementById("combinaisons_sitvq"),ttc=document.getElementById("combinaisons_isTTC").value;
  var sv=document.getElementById("sv$"+this.affiche_id);
  if(sv){
    var ipk=sv.getElementsByTagName("input");
for(var i=0,len=ipk.length;i<len;i++){
    if(ipk[i].checked===true){
      this.ser_ch.push(ipk[i].id.split('$')[2]);
        var dpx=YAHOO.util.Dom.getNextSibling(ipk[i].parentNode);
        prix+=parseFloat(dpx.innerHTML);
        if(ttc=="1")
           total_ttc+=parseFloat(YAHOO.util.Dom.getNextSibling(dpx).innerHTML);
      }
    }
  }
  prix=Math.round(prix*10*10)/100;
  if(ch_tps.checked){
        tps=prix*p_tps/100;
        tps=Math.round(tps*10*10)/100;
     }
  if(ch_tvq.checked){
        if(ch_tps.checked && ttc=="1")
            tvq=total_ttc-prix-tps;
         else
            tvq=(prix+tps)*p_tvq/100;
      tvq=Math.round(tvq*10*10)/100;
   }

  total=prix+tps+tvq;
  total=Math.round(total*10*10)/100;


  document.getElementById("pxTotal").innerHTML=this.ftNum(prix);
  document.getElementById("mtTps").innerHTML=this.ftNum(tps);
  document.getElementById("mtTvq").innerHTML=this.ftNum(tvq);
  document.getElementById("mtTotal").innerHTML=this.ftNum(total);
  document.getElementById("combinaisons_services_choisis").value=this.ser_ch.join(',');
  for(var i in this.prixListeners) this.prixListeners[i].call();

},
ftNum:function(pnumber)
{
var dec=String(pnumber);
if (dec.indexOf('.')<0)
      dec=dec + '.00'
else
{
   if ((dec.length-dec.indexOf('.'))==2) { dec=dec + '0'; }
   if ((dec.length-dec.indexOf('.'))==1) { dec=dec + '0'; }
 }

  return dec;
 },
grouper:function(tar){
  var parent=tar.parentNode.parentNode;
  var grp,sous_grp;
   if(Dom.hasClass(parent,"serv")){
       grp=YAHOO.util.Dom.getFirstChild(parent).innerHTML;
       parent=parent.parentNode;
   }else{
      sous_grp=YAHOO.util.Dom.getFirstChild(parent).innerHTML;
      parent=parent.parentNode;
      grp=YAHOO.util.Dom.getFirstChild(YAHOO.util.Dom.getFirstChild(parent)).innerHTML;
     //Traitement des sous-groupes;
     for(var ser=YAHOO.util.Dom.getNextSibling(YAHOO.util.Dom.getFirstChild(parent));ser!=null;ser=YAHOO.util.Dom.getNextSibling(ser)){
          var cer=YAHOO.util.Dom.getFirstChild(YAHOO.util.Dom.getNextSibling(YAHOO.util.Dom.getFirstChild(ser)));
	   if(cer!==tar && sous_grp==YAHOO.util.Dom.getFirstChild(ser).innerHTML){
              cer.checked=false;
              this.toggle(cer);
             }
      }
   }

    for(var ser=YAHOO.util.Dom.getFirstChild(parent.parentNode);ser!=null;ser=YAHOO.util.Dom.getNextSibling(ser))
    if(ser!==parent && grp==YAHOO.util.Dom.getFirstChild(YAHOO.util.Dom.getFirstChild(ser)).innerHTML){
          var ipt=ser.getElementsByTagName("input");
          for(var i=0,len=ipt.length;i<len;i++){
              ipt[i].checked=false;
              this.toggle(ipt[i]);
          }
     }
  }
}


