/*-----------------------------------------------------------------------------------------------*/
//
// Copyright (c) 2008 Agence Clark (http://www.agence-clark.com)
//
/*-----------------------------------------------------------------------------------------------*/

/*-----------------------------------------------------------------------------------------------*/
// Init Page
/*-----------------------------------------------------------------------------------------------*/
Event.observe(window, 'load', InitPage, false);
function InitPage(){	
	//- Panier Haut -//
	if($('bt_ouvrir_panier') && $('panier_haut')){
		//- Ouverture -//
		Event.observe($('bt_ouvrir_panier'),'click',function(){ 			
			OpenClose('bt_ouvrir_panier','panier_haut');
			if($('bt_ouvrir_panier').hasClassName('on')) $$('body select').each(function(e){ e.setStyle({visibility:'hidden'});});
			else $$('body select').each(function(e){ e.setStyle({visibility:'visible'});});
		});
		
		//- Evt Maj Quantite -//
		$$('#panier_haut .qu a').each(function(e){ Event.observe(e,'click',function(){ MajPanierHaut(e); }) });
		$$('#panier_haut .qu .ProdQu').each(function(e){ Event.observe(e,'change',function(){ MajPanierHaut(e); }) });
		
		//- Evt Supp -//
		$$('#panier_haut a.supp').each(function(e){ Event.observe(e,'click',function(){ MajPanierHaut(e); }) });
	}
	//---------------//
	
	//- Panier General -//
	if($('panier')){
		//- Evt Maj Quantite -//
		$$('#panier .quantite a').each(function(e){ Event.observe(e,'click',function(){ MajPanierGeneral(e); }) });
		$$('#panier .quantite .ProdQu').each(function(e){ Event.observe(e,'change',function(){ MajPanierGeneral(e); }) });
		
		//- Evt Supp -//
		$$('#panier td.supprimer a').each(function(e){
			Event.observe(e,'click',function(){ 
				if(confirm("Voulez-vous supprimer ce produit de votre panier ?")) MajPanierGeneral(e);
			})
		});
		
		//- Evt Maj Frais -//
		$('frm_panier').getInputs('radio', 'livraison').each(function(e){ Event.observe(e,'click',function(){ GestionFrais(e); }) });
		
		//- Evt Code promo -//
		//if($('bt_code_promo'))	Event.observe($('bt_code_promo'),'click',function(){ GestionPromo(); });
		
		//- Evt Ajout -//
		if($('conteneur_produit')){
			$$('#conteneur_produit .panier a').each(function(e){
				Event.observe(e,'click',function(){ MajPanierGeneral(e); });
			});
		}
	}
	//------------------//
	//- Evt Code promo -//
	if($('bt_code_promo'))	Event.observe($('bt_code_promo'),'click',function(){ $('frm_reduction').submit(); });
}

/*-----------------------------------------------------------------------------------------------*/
// Fonctions
/*-----------------------------------------------------------------------------------------------*/
/////- Panier Haut -/////
//-- Maj du panier haut --//
var MajPanierHaut = function(e){
	//-- Input --/
	if(e.nodeName.toLowerCase() == "input"){
		var fathers = e.ancestors();
		var IdProd = fathers[2].down();
		var ElmPrix = fathers[0].next().down('.prix');
		var InputQuProd = e;
		var QuProd = e.value;
		var TypeMaj = 'modification';
		var parametres = {IdProd : IdProd.value, QuProd : QuProd};
	}
	//-- Liens --//
	else if(e.nodeName.toLowerCase() == "a"){
		if(e.hasClassName('plus') || e.hasClassName('moins')){			
			var fathers = e.ancestors();
			var IdProd = fathers[3].down();
			var ElmPrix = fathers[1].next().down('.prix');
			var InputQuProd = fathers[0].next();
			var QuProd = InputQuProd.value;
			var TypeMaj = 'modification';
			//-- Operation --//
			if(e.hasClassName('plus')) QuProd ++;
			else  QuProd --;
			var parametres = {IdProd : IdProd.value, QuProd : QuProd};
		}else if(e.hasClassName('supp')){	
			var fathers = e.ancestors();			
			var IdProd = fathers[1].down();
			var LigneProd = fathers[1];
			var TypeMaj = 'suppression';
			var parametres = {IdProd : IdProd.value};
		}else{
			var fathers = e.ancestors();
			var IdProd = fathers[1].down();
			var TypeMaj = 'ajout';
			var parametres = {IdProd : IdProd.value};
		}
	}
	
	//-- Appel Ajax --//
	new Ajax.Request('/_ajax.php?ACT=MajPanierHaut&TypeMaj='+TypeMaj,{
		parameters: parametres,
		onComplete: function(requester){
			if(requester.responseText != "false"){
				var Panier = requester.responseText.evalJSON();
				// Maj ligne produit
				if(TypeMaj == 'modification'){
					InputQuProd.value = Panier.QuProd;
					ElmPrix.update(Panier.MtProd);
				}else if(TypeMaj == 'suppression'){
					Effect.Fade(LigneProd,{duration:0.3,afterFinish:function(){ LigneProd.remove(); }});					
				}else if(TypeMaj == 'ajout'){					
					//- Insertion de la ligne -//
					var tpl = '<div class="produit"><input type="hidden" id="ProdId_'+Panier.IdProd+'" name="ProdId_'+Panier.IdProd+'" value="'+Panier.IdProd+'" class="ProdId" /><div class="nom_supp"><a href="'+Panier.LienProd+'" class="nom">'+Panier.NomProd+'</a><a href="javascript:void(0);" class="supp"><img src="/images/commun/picto/supp1.gif" alt="Supprimer" /></a></div><div class="qu_prix"><div class="qu"><p><a href="javascript:void(0);" class="plus"><img src="/images/commun/picto/plus1.gif" alt="Ajouter" /></a><a href="javascript:void(0);" class="moins"><img src="/images/commun/picto/moins1.gif" alt="Retirer" /></a></p><input type="text" id="ProdQu_'+Panier.IdProd+'" name="ProdQu_'+Panier.IdProd+'" value="1" class="ProdQu" /></div><strong><span class="prix">'+Panier.MtProd+'</span> &euro;</strong></div></div>';
					var Insertion = $('ListePanierHaut').insert({bottom:tpl}).childElements().last();
					var childreen = Insertion.descendants();
					var bt_plus = childreen[8];
					var bt_moins = childreen[10];
					var input_qu = childreen[12];
					var bt_supp = childreen[3];
					// Evt Maj Quantite
					Event.observe(bt_plus,'click',function(){ MajPanierHaut(bt_plus); });
					Event.observe(bt_moins,'click',function(){ MajPanierHaut(bt_moins); });
					Event.observe(input_qu,'change',function(){ MajPanierHaut(input_qu); });
					// Evt Supp
					Event.observe(bt_supp,'click',function(){ MajPanierHaut(bt_supp); });
					
					//- InfoBox -//
					infoPanier = new infoBox('/infoBox/ajout_panier.php?IdProd='+IdProd.value,{BoxdomNode:'infoNode',BoxCallback:'BtFermer()',BoxOverlayOpacity:0.75,BoxSrcFermer:'/images/infoBox/infobox_bt_fermer.gif'});				
					infoPanier.ouvrir();
				}
				// Maj nombre produits
				if(Panier.NbTot <= 1)	$('NbProdPanierHaut').update('<em>'+Panier.NbTot+'</em> article');
				else	$('NbProdPanierHaut').update('<em>'+Panier.NbTot+'</em> articles');
				
				// Maj infos generales
				$('MtPanierHaut').update(Panier.MtTotHorsLiv);				
			}
			else if(TypeMaj == 'ajout') ModalInfo('Attention', 'Ce produit est d&eacute;j&agrave; dans votre panier');
			else ModalInfo('Attention', 'Une erreur s\'est produite');
		}
	});
};
//---------------------//

/////- Panier General -/////
//-- Gestion code promo --//
var GestionPromo = function(){
	var CodePromo = $('code_promo').value;
	if(CodePromo == "") ModalInfo("Attention", "Le code saisi n'est pas valide");
	else{
		//-- Appel Ajax --//
		new Ajax.Request('/_ajax.php?ACT=MajPanierGeneral&TypeMaj=promo',{
			parameters: {CodePromo : CodePromo},
			onComplete: function(requester){
				if(requester.responseText != "false"){
					var Panier = requester.responseText.evalJSON();
					// Maj ligne promo
					if(Panier.CodePromo && Panier.Promo){
						if($('ligne_promo')){
							$('PanierCodePromo').update(Panier.CodePromo);
							$('PanierPromo').update(Panier.Promo);
						}else{
							var tpl = '<tr id="ligne_promo" class="promo"><td class="code">Code promo <span id="PanierCodePromo">'+Panier.CodePromo+'</span></td><td class="prix"><span id="PanierPromo">'+Panier.Promo+'</span></td><td>&nbsp;</td></tr>';
							$('ligne_livraison').insert({after:tpl});
						}
					}
					// Maj montant
					$('MtTotLiv').update(Panier.MtTotLiv);
				}
				else ModalInfo("Attention", "Le code saisi ne correspond à aucune réduction, avanatages ou chèques cadeaux.");
			}
		});
	}
};

//-- Gestion des frais de livraison --//
var GestionFrais = function(e){
	//-- Recup frais de port --//
	var FraisPort;
	var btsRadio = $('frm_panier').getInputs('radio', 'livraison');
	btsRadio.each(function(e){
		if(e.checked) TypeFrais = e.value;
	});
	
	//-- Appel Ajax --//
	new Ajax.Request('/_ajax.php?ACT=MajPanierGeneral&TypeMaj=frais',{
		parameters: {TypeFrais : TypeFrais},
		onComplete: function(requester){
			if(requester.responseText != "false"){
				var Panier = requester.responseText.evalJSON();
				btsRadio.each(function(e){
					if(e.value == Panier.TypeFrais) e.checked = 'checked';
				});
				$('MtTotLiv').update(Panier.MtTotLiv);				
			}
			else ModalInfo("Attention", requester.responseText);
		}
	});
};

//-- Maj du panier general --//
var MajPanierGeneral = function(e){
	//-- Recup frais de port --//
	var TypeFrais;
	var btsRadio = $('frm_panier').getInputs('radio', 'livraison');

	//-- Input --/
	if(e.nodeName.toLowerCase() == "input"){		
		var fathers = e.ancestors();
		var IdProd = e.previous().down();
		var ElmPrix = fathers[1].down('.prix').down('.euro');
		var InputQuProd = e;
		var QuProd = e.value;
		var TypeMaj = 'modification';
		var parametres = {IdProd : IdProd.value, QuProd : QuProd};
	}
	//-- Liens --//
	else if(e.nodeName.toLowerCase() == "a"){
		if(e.hasClassName('plus') || e.hasClassName('moins')){			
			var fathers = e.ancestors();
			var IdProd = fathers[0].down();
			var ElmPrix = fathers[2].down('.prix').down('.euro');
			var InputQuProd = fathers[1].down('input.ProdQu');
			var QuProd = InputQuProd.value;
			var TypeMaj = 'modification';
			//-- Operation --//
			if(e.hasClassName('plus')) QuProd ++;
			else  QuProd --;
			var parametres = {IdProd : IdProd.value, QuProd : QuProd};
		}else if(e.hasClassName('bt_supp')){			
			var fathers = e.ancestors();			
			var IdProd = fathers[1].down('.quantite').down(1);
			var LigneProd = fathers[1];
			var TypeMaj = 'suppression';
			var parametres = {IdProd : IdProd.value};
		}else{
			var fathers = e.ancestors();
			var IdProd = fathers[1].down();
			var TypeMaj = 'ajout';
			var parametres = {IdProd : IdProd.value};
		}
	}
	
	//-- Appel Ajax --//
	new Ajax.Request('/_ajax.php?ACT=MajPanierGeneral&TypeMaj='+TypeMaj,{
		parameters: parametres,
		onComplete: function(requester){
			if(requester.responseText != "false"){
				var Panier = requester.responseText.evalJSON();
				// Maj ligne produit
				if(TypeMaj == 'modification'){
					InputQuProd.value = Panier.QuProd;
					ElmPrix.update(Panier.MtProd);
				}else if(TypeMaj == 'suppression'){
					Effect.Fade(LigneProd,{duration:0.3,afterFinish:function(){ LigneProd.remove(); }});					
				}else if(TypeMaj == 'ajout') {					
					//- Insertion de la ligne -//
					var tpl = '<tr><td class="nom_produit">'+Panier.NomProd+'</td><td class="disponibilite">'+Panier.DispoProd+'</td><td class="quantite"><p><input type="hidden" id="PanierProdId_'+Panier.IdProd+'" name="PanierProdId_'+Panier.IdProd+'" value="'+Panier.IdProd+'" class="PanierProdId" /><a class="plus" href="javascript:void(0);"><img alt="Ajouter" src="/images/commun/picto/plus1.gif"/></a><a class="moins" href="javascript:void(0);"><img alt="Retirer" src="/images/commun/picto/moins1.gif"/></a></p><input type="text" class="ProdQu" value="'+Panier.QuProd+'" /></td><td class="prix"><span class="euro">'+Panier.MtProd+'</span> &euro;</td><td class="supprimer"><a href="javascript:void(0);" class="bt_supp"><img src="/images/commun/picto/corbeille.gif" alt="Supprimer" /></a></td></tr>';
					var Insertion = ($('ListeProdPanier').down()).insert({bottom:tpl}).childElements().last();
					var childreen = Insertion.descendants();
					var bt_plus = childreen[5];
					var bt_moins = childreen[7];
					var input_qu = childreen[9];
					var bt_supp = childreen[13];
					// Evt Maj Quantite
					Event.observe(bt_plus,'click',function(){ MajPanierGeneral(bt_plus); });
					Event.observe(bt_moins,'click',function(){ MajPanierGeneral(bt_moins); });
					Event.observe(input_qu,'change',function(){ MajPanierGeneral(input_qu); });
					// Evt Supp
					Event.observe(bt_supp,'click',function(){ if(confirm("Voulez-vous supprimer ce produit de votre panier ?")) MajPanierGeneral(bt_supp); })
					
					//- Traitement des lignes -//
					var classtype;
					var lignes = $$('#ListeProdPanier tr');
					lignes.each(function(e,i){						
						e.className = '';
						if(i%2 == 0){
							e.addClassName('type2');
							classtype = 'type1';
						}else{
							e.addClassName('type1');
							classtype = 'type2';
						}						
					});
				}
				// Maj nombre produits
				if(Panier.NbTot <= 1){
					$('NbProdPanierHaut').update('<em>'+Panier.NbTot+'</em> article');
					$('NbProdPanierGeneral').update(Panier.NbTot+' article');
					$('NbProdPanierGeneralBas').update('('+Panier.NbTot+' article)');
				}else{
					$('NbProdPanierHaut').update('<em>'+Panier.NbTot+'</em> articles');
					$('NbProdPanierGeneral').update(Panier.NbTot+' articles');
					$('NbProdPanierGeneralBas').update('('+Panier.NbTot+' articles)');
				}
				// Maj infos generales
				$('MtTotHorsLiv').update(Panier.MtTotHorsLiv);
				btsRadio.each(function(e){
					if(e.value == Panier.TypeFrais) e.checked = 'checked';
				});
				
				$('MtFrais').update(Panier.MtFrais);
				if(Panier.CodePromo && $('ligne_promo')){
					$('PanierCodePromo').update(Panier.CodePromo);
					$('PanierPromo').update(Panier.Promo);
				}
				$('MtTotLiv').update(Panier.MtTotLiv);
			}
			else if(TypeMaj == 'ajout') ModalInfo('Attention', 'Ce produit est d&eacute;j&agrave; dans votre panier');
			else ModalInfo('Attention', 'Une erreur s\'est produite');
		}
	});
};
//------------------------//

var BtFermer = function(){
	Event.observe($('bt_continuer'),'click',function(){ infoPanier.fermer(); });
};

/*-----------------------------------------------------------------------------------------------*/
// Verification de formulaires
/*-----------------------------------------------------------------------------------------------*/
var frmPanier = function(){
	var valideLigne = false;
	var valideCGV = false;
	$$('#frm_panier .liste_produit tr.type1','#frm_panier .liste_produit tr.type2').each(function(e){ valideLigne = true; });
	if($('conditions_generales').checked) valideCGV = true;
	
	if(valideLigne && valideCGV) return true;
	else if(valideLigne){
		ModalInfo('Attention', 'Vous devez prendre connaissance des conditions g&eacute;n&eacute;rales de vente pour continuer votre commande');
		return false;
	}else{
		ModalInfo('Attention', 'Il n\'y a aucun produit dans votre panier');
		return false;
	}
};