var myrules = {
	'input.ch_saisie_ref' : function(il){
		//
		// Affichage de ref. OUTIFRANCE dans le champ de recherche par reference
		// et vidage du champ lors du focus
		//
		il.onclick = function(){
			if(this.value=='ref. OUTIFRANCE') {
				this.value='';
			}
		}
		il.onblur = function(){
			if(this.value=='') {
				this.value='ref. OUTIFRANCE';
			}
		}
	},

	'input.ch_saisie' : function(il){
		//
		// Affichage de "mot clé" dans le champ de recherche par reference
		// et vidage du champ lors du focus
		//
		il.onclick = function(){
			if(this.value=='mot clé') {
				this.value='';
			}
		}
		il.onblur = function(){
			if(this.value=='') {
				this.value='mot clé';
			}
		}
	},
	
	'a.libelle_cotation_produit' : function(yl){
		yl.onclick = function(){
			getBlocCotation(yl);
		}
	},
	
	'a.lien_promotion' : function(lp) {
		//
		// Clic sur le lien pour l'affichage des promotions
		//
		lp.onclick = function(){
			var blocache = this.id.replace('offre_','');
			var msgAttente = $('attente:'+blocache);
			var tableau = blocache.split('_');
			new Effect.Grow(msgAttente, {queue:'front'});
			affichePromotionSuivante(tableau, 0, msgAttente, 0, lp.id);
		}
	},
	
	'a.libelle_suppression_produit' : function(spf){
		//
		// Clic sur le lien de suppression des favoris d'un produit
		// masquage des champs de resultats de cotation systematique (en cas de ouverture fermeture)
		//
		spf.onclick = function(){
		var url = siteencours+'module/ajax/index.php?module=produitfavori';
		var idbloc = this.id.replace('hors_favori_','');
		var idprod = this.id.replace('hors_favori_cotation_','');

		new Ajax.Request(url, {
				asynchronous: 'true', 
				postBody: 'favori='+idbloc+'&action=suppression', 
				onLoading: function (xhr)
				{
					$('vers_favori_image_'+idbloc).style.display = 'block';
				},
				onFailure: function(xhr)
				{
					$('vers_favori_image_'+idbloc).style.display = 'none';
				},
				onSuccess: function(xhr)
				{
					var temmp = xhr.responseText.split('|');
					
					//Affichage du nombre de favori dans le menu
					var spanaffichage = "nbr_favori_"+temmp[0];
					var idspanaffichage = $(spanaffichage);
					idspanaffichage.innerHTML = temmp[1];

					//Petit effet sur la ligne
					var lignetable = 'ligne_favori_'+idbloc;
					var idligne = $(lignetable);
					new Effect.SwitchOff(idligne);
				}
				}
			);
		}
	},

	'div.ferme_cot' : function(rl){
		//
		// Clic sur le bouton de fermeture du cotation du produit
		// 
		rl.onclick = function(){
			var idproduit = this.id.replace('ferme_','');
			var objetbloc = $(idproduit);
			var en_cours = $('encours:'+idproduit);
			new Effect.Shrink(objetbloc, {afterFinish: function(){en_cours.value = 0;}});
		}
	},
	
	'div.btn_cotation_succes' : function(csl){
		//
		// Masquage des champs de succes de cotation lors du chargement
		// 
		csl.onload = function(){
			this.style.display = 'none';
		}
	},
	
	'div.btn_cotation_echec' : function(cel){
		//
		// Masquage des champs d echec de cotation lors du chargement
		// 
		cel.onload = function(){
			this.style.display = 'none';
		}
	},
	
	'div.btn_panier_ko' : function(pkl){
		//
		// Masquage des champs d echec de mise au panier
		// 
		pkl.onload = function(){
			this.style.display = 'none';
		}
	},

	'div.btn_cotation' : function(cl){
		//
		// Clic sur le bouton d'interrogation du stock
		// 
		cl.onclick = function(){
			doCotation(cl);
		}
	},
	
	'div.fav_cot_faux' : function(ff){
		//
		// Clic sur le bouton d'ajout au favori
		// 
		ff.onclick = function(){
			ajoutFavori(ff);
		}
	},

	'div.btn_panier' : function(pl){
		//
		// Clic sur le bouton de mise au panier
		// 
		pl.onclick = function(){
			ajoutPanier(pl)
		}
	},
	
	'a.lien_recherche_plus' : function(yl){
		yl.onclick = function(){
			var elementcache = this.id.replace('lien_','');
			var objetcache = $(elementcache);
			objetcache.className = 'bloc_recherche';
			new Effect.BlindDown(objetcache);
		}
	},
	
	'div.btn_ferme_recherche' : function(rl){
		rl.onclick = function(){
			var elementbloc = this.id.replace('ferme_','');
			var objetbloc = $(elementbloc);
			new Effect.Puff(objetbloc);
		}
	},
	
	'a.affiche_adresse' : function(na){
		na.onclick = function(){
			var nombloc = this.id;
			var valadr = $('choix_adresse').value;
			var bloc = $('adresse_'+nombloc)
			if(nombloc == 'affiche')
			{
				var url = siteencours+'module/ajax/index.php?module=ficheadresse';
				new Ajax.Request(url, {
					asynchronous: 'true', 
					postBody: 'idadresse='+valadr,
					onFailure: function(xhr)
					{
						bloc.style.display = 'none';
					},
					onSuccess: function(xhr)
					{
						$('adresse_'+nombloc+'_contenu').innerHTML = xhr.responseText;
						new Effect.SlideDown(bloc);
					}
				}
				);
			}
			else
			{
				new Effect.SlideDown(bloc);
			}
		}
	},
	
	'div.btn_close_fiche_adresse' : function(bc){
 		bc.onclick = function(){
 			var nombloc = this.id.replace('ferme_', '');
 			var objetbloc = $('adresse_'+nombloc);
 			new Effect.SlideUp(objetbloc);
 		}
 	},
 	
 	'a.detail_historique_article' : function(ha){
 		ha.onclick = function(){
 			var nombloc = this.id.replace('detail_', '');
 			var objetbloc = $('liste_'+nombloc);
 			new Effect.Grow(objetbloc);
 		}
 	},
 	
 	'div.btn_close_detail_historique_article' : function(bc){
 		bc.onclick = function(){
 			var nombloc = this.id.replace('ferme_', '');
 			var objetbloc = $('liste_'+nombloc);
 			new Effect.SwitchOff(objetbloc);
 		}
 	},
 	
 	'a.aide' : function(ai){
 		ai.onclick = function(){
 			var objetbloc = $('donnee_aide');
 			new Effect.SlideDown(objetbloc);
 		}
 	},
 	
 	'div.btn_close_bloc_aide' : function(bc){
 		bc.onclick = function(){
 			var objetbloc = $('donnee_aide');
 			new Effect.DropOut(objetbloc);
 		}
 	},
 	
 	'a.apercu_page' : function(ap){
 		ap.onclick = function(){
 			var valeur_select = $('pageaide').value;
 			this.href=siteencours+"index.php?page="+valeur_select;
 		}
 	},
 	
 	'div.chargement_commande' : function(cc) {
		var message_attente = $('instruction_chargement');
 		new Effect.Appear(message_attente, {queue:'front', duration:0.5});
 		new Ajax.Request(urlaff, {
			asynchronous: 'true',
			postBody: 'tpl=commande/liste_commande',
			onSuccess: function (ahr)
			{
				new Effect.Appear(cc, {queue:'end', duration:0.5, beforeStart: function(){cc.innerHTML = ahr.responseText;}});
				new Effect.Fade(message_attente, {queue:'end', duration:0.5});
			}
		});
 	},
 	
 	'a.suppression_devis' : function(sd) {
 		sd.onclick = function(){
 			var bloc = $('suppression'+sd.id.replace('devis', ''));
 			if(bloc.style.display == 'none')
 				bloc.style.display = 'block';
 			else
 				bloc.style.display = 'none';
 		}
 	},
 	
 	'select.listerepresentant' : function(cr) {
 		reload_compteclient();
 		cr.onchange = function(){
 			reload_compteclient();
 		}
 	},
 	
 	'select.listetrie' : function(lt) {
 		lt.onchange = function(){
 			reload_compteclient();
 		}
 	},
 	
 	'.validerForm' : function(form) {
 		form.onclick = function() {
 			traitementFormulaire(form.id);
 		}
 	},
 	
 	'img.actualise_captcha' : function(ac){
 		ac.onclick = function(){
 		var bloc = $('contenu_captcha');
 		var en_cours = $('image_encours');
 		var attente = $('attente_image');
 		var src_ori = attente.src;
 		var image_attente = $('chemin_image').value;

 			if(en_cours.value == '1')
				return;
 			
 			en_cours.value = '1';
 			
 			new Effect.BlindUp(bloc, {queue:'front', beforeStart: function(){attente.src = image_attente;}});
 						
			new Ajax.Request(urlaff, {
				asynchronous: 'true',
				postBody: 'tpl=commun/captcha',
				onSuccess: function (ahr)
				{
					new Effect.BlindDown(bloc, {queue:'end', beforeStart: function(){bloc.innerHTML = ahr.responseText;}, afterFinish: function(){attente.src = src_ori; en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		}
 	},
 	
 	'div.lien_reglette' : function(lr){
 		goReglette(lr);
 	},
 	
 	'#changerpage' : function(cr) {
 		var bloc_old = $('changement_page_old');
 		var bloc_new = $('changement_page_new');
 		var tpl = cr.value;
 		new Ajax.Request(urlaff, {
			asynchronous: 'true',
			postBody: 'tpl='+tpl,
			onSuccess: function (ahr)
			{
				new Effect.Fade(bloc_old, {queue:'front', duration:3.0, afterFinish: function(){bloc_new.update(ahr.responseText)}});
				new Effect.Appear(bloc_new, {queue:'end'});
			}
		});
 	},
 	
 	'#ajoutpanier_rapide' : function(panier) {
 		panier.onclick = function() {
 			var refp = $('refp').value;
			var qte = $('qtep').value;
 			ajoutRapidePanier(refp, qte);
 			$('refp').value = "";
			$('qtep').value = "";
 		}
 	},
 	
 	'#refp' : function(champ) {
 		champ.focus();
 		actualfocus = champ.id;
 		document.observe('keydown', declencheAjoutPanier);
 		champ.onfocus = function() {
 			actualfocus = champ.id;
 		}
 		
 		champ.onblur = function() {
 			actualfocus = '';
 		}
 	},
 	
 	'#qtep' : function(champ) {
 		champ.onfocus = function() {
 			actualfocus = champ.id;
 		}
 		champ.onblur = function() {
 			actualfocus = '';
 		}
 	},
 	
 	'.panier_qte' : function(champ) {
 		champ.onfocus = function() {
 			actualfocus = champ.id;
 		}
 		champ.onblur = function() {
 			actualfocus = '';
 		}
 	},
 	
 	'.panier_b_modif' : function(modif)
 	{
 		document.observe('keydown', declencheModifPanier);
 		modif.onclick = function() {
 			var paramID = modif.id.replace("modif_","");
 			if($('qte_'+paramID) && $('refmodif_'+paramID))
 			{
 				var refp = $('refmodif_'+paramID).value;
 				var qte = $('qte_'+paramID).value;
 				var idpromo = 0;
 				var numpromo = 0;
 				if($('idpromomodif_'+paramID))
 					idpromo = $('idpromomodif_'+paramID).value;
 				if($('numpromomodif_'+paramID))
 					numpromo = $('numpromomodif_'+paramID).value;
 				ajoutRapidePanier(refp, qte, 'maj', idpromo, numpromo);
 				$('qte_'+paramID).value = "";
 			}
 		}
 	},
 	
 	'.panier_b_suppr' : function(suppr)
 	{
 		suppr.onclick = function() {
 			var paramID = suppr.id.replace("suppr_","");
 			if($('refsuppr_'+paramID))
 			{
 				var refp = $('refsuppr_'+paramID).value;
 				var qte = 0;
 				var idpromo = 0;
 				var numpromo = 0;
 				if($('idpromosuppr_'+paramID))
 					idpromo = $('idpromosuppr_'+paramID).value;
 				if($('numpromosuppr_'+paramID))
 					numpromo = $('numpromosuppr_'+paramID).value;
 				ajoutRapidePanier(refp, qte, 'suppression', idpromo, numpromo);
 			}
 		}
 	}
};
var actualfocus = '';
function declencheAjoutPanier(event)
{
	if(event.keyCode == 13 && (actualfocus == 'refp' || actualfocus == 'qtep'))
	{
		var refp = $('refp').value;
		var qte = $('qtep').value;
		ajoutRapidePanier(refp, qte);
		$('refp').value = "";
		$('qtep').value = "";
	}
}

function declencheModifPanier(event)
{
	if(event.keyCode == 13)
	{
		var Expression = new RegExp("qte_.*");
		if(Expression.test(actualfocus))
		{
			var paramID = actualfocus.replace("qte_","");
			if($('qte_'+paramID) && $('refmodif_'+paramID))
			{
				var refp = $('refmodif_'+paramID).value;
				var qte = $('qte_'+paramID).value;
				var idpromo = 0;
 				var numpromo = 0;
 				if($('idpromomodif_'+paramID))
 					idpromo = $('idpromomodif_'+paramID).value;
 				if($('numpromomodif_'+paramID))
 					numpromo = $('numpromomodif_'+paramID).value;
				ajoutRapidePanier(refp, qte, 'maj', idpromo, numpromo);
				$('qte_'+paramID).value = "";
			}
		}
	}
}

function reload_compteclient()
{
	var listeRepr = $('listerepresentant');
	var listeTrie = $('listetrie');
	var message_attente = $('attente_listeclient');
	var bloc_texte = $('listeclient');
	new Effect.Fade(bloc_texte, {duration:0.5, queue:'front'});
	new Effect.Appear(message_attente, {duration:0.5, queue:'end'});
	new Ajax.Request(urlaff, {
		asynchronous: 'true',
		postBody: 'tpl=site/choix/admin_representant_client&idrepresentant='+listeRepr.value+'&trie='+listeTrie.value,
		onSuccess: function (ahr)
		{
			new Effect.Appear(bloc_texte, {duration:0.5, queue:'end', beforeStart: function(){bloc_texte.innerHTML = ahr.responseText;}});
			new Effect.SwitchOff(message_attente, {duration:0.5, queue:'end'});
		}
	});
}

function ajoutRapidePanier(refp, qte, action, idpromo, numpromo)
{
	var action = action || "ajout";
	var idpromo = idpromo || 0;
	var numpromo = numpromo || 0;
	var bloc = $('bloc:ajoutpanier_rapide');
	var en_cours = $('encours:ajoutpanier_rapide');
	var attente = $('attente:ajoutpanier_rapide');
	if(en_cours.value == '1')
		return;
	en_cours.value = '1';
	new Effect.Appear(attente, {queue:'front', duration:0.5});
	var chPOST = "&checkedField=ref"+"|qte|action|idpromo|numpromo|"+
		"&fieldValue="+refp+"|"+qte+"|"+action+"|"+idpromo+"|"+numpromo;
	new Ajax.Request(urltask, {
		asynchronous: 'true',
		postBody: 'tache=ajoutrapide_panier'+chPOST,
		onComplete: function(xhr)
		{
			var response = xhr.responseText.split('[SEP]');
			var result = treatTaskMsg(response[0]);
			if(result == true)
			{
				if($('detail_panier'))
				{
					if($('detail_panier').style.display == "none")
						$('detail_panier').style.display = "block";
					if($('tableau_panier'))
					{
						if(action == "suppression")
						{
							//Cas de la suppression d'un element, il faut enlever la ligne dans le tableau
							if($(response[1]))
							{
								$(response[1]).remove();
								//On regarde si le tableau est pas vide, si c'est le cas, on cache le panier
								var tabLigne = $$('tr.ligne_panier');
								if(tabLigne.length == 0)
									$('detail_panier').style.display = "none";
							}
						}
						else
						{
							if(response[3] != 0)
								var ch = '<tr class="ligne_promotion ligne_panier" id="'+response[1]+'">';
							else
								var ch = '<tr class="ligne_panier" id="'+response[1]+'">';
							if($(response[1]))
							{
								//Ce produit existe deja, mise a jour de la ligne
								$(response[1]).replace(ch+response[2]+'</tr>');
							}
							else
							{
								//Le produit n'existe pas encore, ajout d'une ligne
								$('tableau_panier').insert(ch+response[2]+'</tr>');
							}
						}
					}
					if($('totalht'))
						$('totalht').innerHTML = response[4];
					if($('totalttc'))
						$('totalttc').innerHTML = response[5];
					var tabTVA = response[6].split("#");
					//On recupere la liste des taux de tva
					var listeTVA = $$('tr.typetva');
					var tabtype = [];
					for(var i = 0; i < listeTVA.length; i++)
					{
						tabtype.push(listeTVA[i].id.replace("typetva_",""));
					}
					for(var i = 0; i < tabTVA.length; i++)
					{
						var tabTaux = tabTVA[i].split('_');
						if(tabTaux[0] != "")
						{
							if($("totaltva_"+tabTaux[0]))
								$("totaltva_"+tabTaux[0]).innerHTML = tabTaux[1];
							else
							{
								if($('table_recap'))
								{
									$('table_recap').insert('<tr class="typetva" id="typetva_'+tabTaux[0]+'"><th>Montant TVA &euro; &agrave; '+tabTaux[0]+' %</th></tr>');
									$('table_recap').insert('<tr id="valtva_'+tabTaux[0]+'"><td class="col_droite" id="totaltva_'+tabTaux[0]+'">'+tabTaux[1]+'</td></tr>');
								}
							}
							var indexTab = array_search(tabTaux[0], tabtype);
							if(indexTab !== false)
							{
								tabtype[indexTab] = "";
							}
						}						
					}
					//Il ne reste plus qu'a supprimer les taux de tva qui n'existe plus
					for(key in tabtype)
					{
						if($('typetva_'+tabtype[key]))
							$('typetva_'+tabtype[key]).remove();
						if($('valtva_'+tabtype[key]))
							$('valtva_'+tabtype[key]).remove();
					}
					new Effect.Fade(bloc, {queue:'end', duration:0.5, afterFinish: function(){bloc.innerHTML = response[0].substr(13);}});
					new Effect.Grow(bloc, {queue:'end', duration:0.5});
				}
			}
			else
			{
				if(result == false)
				{
					new Effect.Fade(bloc, {queue:'end', duration:0.5, afterFinish: function(){bloc.innerHTML = response[0].substr(11);}});
					new Effect.Grow(bloc, {queue:'end', duration:0.5});
				}
			}
			new Effect.SwitchOff(attente, {queue:'end', duration:0.5, afterFinish: function(){Behaviour.apply(); en_cours.value = 0;}});
		}
	});
}
// Enregistrement des regles definies ci dessus dans Behaviour
Behaviour.register(myrules);
