var produitValidator=Class.create({initialize:function(a){this.minValue=a;this.maxValue=null;this.qte='input_P_Qte';this.decli='input_P_Id_Declinaison';this.id='input_P_Id';this.add='btnAddPanier';this.details='detailsPanier';this.totAchats='span_P_Nb_Achats';this.totEnCours='span_P_En_Cours';this.totPrix='span_P_Prix';this.totSsPrix='span_P_Sous_Prix';this.error='DivbtnAddPanier';this.inError=false;this.tabAdd=new Array();this.listGrp=new Array();this.urlDispo=urlSite+lang+"/ajax/dispo/__id_produit__/__quantite__/__declinaison__";this.urlAdd=urlSite+lang+"/ajax/add/__id_produit__/__quantite__/__declinaison__";this.urlDecl=urlSite+lang+"/ajax/declinaison/dispo/__id_produit__/__json__";$(this.add).observe('click',this.validateForm.bind(this));$(this.qte).observe('keyup',this.validateQte.bind(this));$(this.qte).observe('change',this.validateQte.bind(this));$(this.qte).observe('click',this.razInputQte.bind(this));$(this.qte).observe('focus',this.razInputQte.bind(this));$(this.qte).observe('blur',this.setDefautQte.bind(this))},razInputQte:function(a){$(this.qte).value=''},setDefautQte:function(a){if($(this.qte).value==""){$(this.qte).value=this.minValue;this.validateQte()}},isValidQte:function(a){var b;var c;b=$(this.qte).getValue();if(isNaN(b)||b<this.minValue||b==''){if(b=='')c=_MSG_QTE_NULL;else if(isNaN(b))c=_MSG_QTE_NAN;else if(b<this.minValue)c=_MSG_QTE_MIN}else{c="QTE_OK"}return c},validateQte:function(a){var b=this.isValidQte();if(b=="QTE_OK"){this.removeMessage();this.validateDispo()}else{this.displayMessage(b)}},validateForm:function(a){if(!this.inError){var b=this.addproduit();if(b!="ADD_KO"){this.tabAdd["Quantite"]=b.nbProduit;this.tabAdd["Nom"]=b.nomProduit;this.tabAdd["NomDecli"]=b.nomDeclinaison;this.tabAdd["Prix"]=b.montantProduit;this.tabAdd["TotAchats"]=b.nombreQTE;this.tabAdd["TotMsg"]=b.message;this.tabAdd["TotPrix"]=b.montantTotal;this.tabAdd["IdProduit"]=b.idProduit;this.tabAdd["IdDecli"]=b.idDeclinaison;this.addInCart()}}},loadDeclinaison:function(c){this.removeMessage();var e=this;this.listGrp=$A(d.getElementsByClassName('liste_Grp'));var f=new Array();var i=0;var g=false;var h=this.urlDecl;this.listGrp.each(function(a){f[i]={id:a.value};i++});var j={click:null,attr:f};h=h.replace("__id_produit__",$(this.id).getValue());h=h.replace("__json__",$H(j).toJSON());new Ajax.Request(h,{method:'get',asynchronous:false,onCreate:function(a){},onSuccess:function(a,b){if(b.requestValid!=1){e.erreurAjax()}else{if(b.valid!=1){if(b.erreur!=1){e.erreurAjax()}else{$('disponibilite').innerHTML=b.dispo;$('disponibilite').addClassName("non_dispo")}}else{$('input_P_Id_Declinaison').value=b.id_declinaison;if($('prix_base')){$('prix_base').innerHTML=formatPrix(b.prix_base_format)}$('prix_final').innerHTML=formatPrix(b.prix_format);$('disponibilite').innerHTML=b.dispo;if(b.have_eco_participation==1){$('eco_participation_prix').innerHTML=formatPrix(b.eco_participation);$('eco_participation').style.display='block'}else{$('eco_participation').style.display='none'}if(b.hors_stock==1){$('disponibilite').addClassName("non_dispo")}else{$('disponibilite').removeClassName("non_dispo");g=b.id_declinaison}}}},onFailure:function(a){e.erreurAjax()}});if(g!==false){$(this.add).removeClassName('linkLock');this.inError=false}else{$(this.add).addClassName('linkLock');this.inError=true}},validateDispo:function(){var c=this;var d=this.urlDispo;var e=false;d=d.replace("__id_produit__",$(this.id).getValue());d=d.replace("__quantite__",$(this.qte).getValue());d=d.replace("__declinaison__",$(this.decli).getValue());new Ajax.Request(d,{method:'get',asynchronous:false,onCreate:function(a){},onSuccess:e=function(a,b){if(b.requestValid!=1){c.erreurAjax()}else{if(b.exist!=1){c.erreurAjax()}else{if(b.valid!=1){if(b.qteMax<0)b.qteMax=0;c.displayMessage(_MSG_QTE_MAX+" "+b.qteMax)}else{e=true}}}},onFailure:function(a){c.erreurAjax()}});if(e)return"DISPO_OK";else return"DISPO_KO"},addproduit:function(){var c=this;var d=this.urlAdd;var e=false;d=d.replace("__id_produit__",$(this.id).getValue());d=d.replace("__quantite__",$(this.qte).getValue());d=d.replace("__declinaison__",$(this.decli).getValue());new Ajax.Request(d,{method:'get',asynchronous:false,onCreate:function(a){},onSuccess:function(a,b){if(b.requestValid!=1){c.erreurAjax()}else{if(b.valid!=1){if(b.encoreDispo<0)b.encoreDispo=0;c.displayMessage(_MSG_QTE_MAX+" "+b.encoreDispo)}else{e=b}}},onFailure:function(a){c.erreurAjax()}});if(e)return e;else return"ADD_KO"},addInCart:function(d){curMenu="Menu";var e=this;var f=$('panier_liste');var g=false;Effect.ScrollTo('header',{duration:0.2,afterFinish:function(){if($("insert-"+e.tabAdd["IdProduit"]+"-"+e.tabAdd["IdDecli"])){g=$("insert-"+e.tabAdd["IdProduit"]+"-"+e.tabAdd["IdDecli"])}var a='<tr id="insert-'+e.tabAdd["IdProduit"]+'-'+e.tabAdd["IdDecli"]+'">';var b='<td class="quantite">'+e.tabAdd["Quantite"]+'</td><td class="nom">'+e.tabAdd["Nom"]+'<br /><span>'+e.tabAdd["NomDecli"]+'</span></td><td class="prix">'+formatPrix(e.tabAdd["Prix"])+' </td></tr><tr><td colspan="3" style="height: 10px;"></td>';var c='</tr>';if(!f.visible()){new Effect.BlindDown(f,{duration:0.2,afterFinish:function(){if(g)g.innerHTML=b;else $('panier_table').insert({top:a+b+c});new Effect.Highlight("insert-"+e.tabAdd["IdProduit"]+"-"+e.tabAdd["IdDecli"],{afterFinish:function(){foldPanier()}})}})}else{if(g)g.innerHTML=b;else $('panier_table').insert({top:a+b+c});new Effect.Highlight("insert-"+e.tabAdd["IdProduit"]+"-"+e.tabAdd["IdDecli"],{afterFinish:function(){foldPanier()}})}$(e.totAchats).innerHTML=e.tabAdd["TotAchats"];$(e.totPrix).innerHTML=formatPrix(e.tabAdd["TotPrix"]);$(e.totSsPrix).innerHTML=formatPrix(e.tabAdd["TotPrix"]);$(e.totEnCours).innerHTML=e.tabAdd["TotMsg"];$(e.details).setStyle({visibility:"visible"});$(e.qte).value=1;e.loadDeclinaison()}})},erreurAjax:function(){this.inError=true;Error.setBtn(this.add);Error.setDiv(this.error);Error.setMsg(_MSG_ERROR_AJAX);Error.displayMessage()},displayMessage:function(a){this.inError=true;Error.setBtn(this.add);Error.setDiv(this.error);Error.setMsg(a);Error.displayMessage()},removeMessage:function(){this.inError=false;Error.setBtn(this.add);Error.setDiv(this.error);Error.removeMessage()}});
