var init = false;
var myrules = {
	'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';
 			attente.src = image_attente;
 			new Ajax.Request(urlaff, {
				asynchronous: 'true',
				postBody: 'tpl=commun/captcha',
				onSuccess: function (ahr)
				{
					new Effect.Fade(bloc, {queue:'front', afterFinish: function(){bloc.innerHTML = ahr.responseText;}});
					new Effect.Appear(bloc, {queue:'end', afterFinish: function(){attente.src = src_ori; en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		}
 	},
 	
 	'.brecord' : function(br)
	{
		br.onclick=function()
		{
			var elemtype = "";
			var elemid = "";
			var conteneur = "";
			var elem_sup = "";
			var callBack = "";
			var attente = "";
			var blocmsg = "";
			var tabID = br.id.split("_");
			if($('typeelement_'+tabID[1]))
				elemtype = $('typeelement_'+tabID[1]).value;
			if($('idelement_'+tabID[1]))
				elemid = $('idelement_'+tabID[1]).value;
			if($('conteneur_'+tabID[1]))
				conteneur = 'conteneur_'+tabID[1];
			if($('elemsup_'+elemtype))
				elem_sup = $('elemsup_'+elemtype).value;
			if($("callback_"+elemtype+"_record"))
				callBack = $("callback_"+elemtype+"_record").value;
			if($('attenterecord_'+tabID[1]))
				attente = 'attenterecord_'+tabID[1];
			if($('msgform_'+tabID[1]))
				blocmsg = 'msgform_'+tabID[1];
			FORM_record(elemtype,elemid,conteneur,elem_sup,callBack, attente, blocmsg);
		}
	},
	
	'.faq_question' : function(faq)
	{
		faq.onclick = function() {
			var cpt = $('cpt_faq').value;
			var encours = $('encours_faq').value;
			if(encours == 1)
				return;
			var idelement = faq.id.replace('faqq_', '');
			$('encours_faq').value = 1;
			if($('faqr_'+cpt))
			{
				new Effect.SlideUp($('faqr_'+cpt), {queue:'front', duration:0.5});
			}
			if($('faqr_'+idelement))
			{
				if(idelement != cpt)
					new Effect.SlideDown($('faqr_'+idelement), {queue:'end', duration:0.5, afterFinish:function(){$('cpt_faq').value = idelement; $('encours_faq').value = 0;}});
				else
				{
					$('encours_faq').value = 0;
					$('cpt_faq').value = 0;
				}
			}
		}
	},
	
	'#question_faq': function(faq)
	{
		faq.onclick = function() {
			new Effect.Appear($('conteneur_faqquestion'));
		}
	},
	
	'.gestion_adresse' : function(g_adr) {
 		g_adr.onclick = function() {
 			var en_cours = $('gestion_adresse_encours');
 			var attente = $('message_attentegestion_adresse');
 			var bloc = $('gestion_adresse');
 			if(en_cours.value == '1')
				return;
			en_cours.value = '1';
			new Effect.Appear(attente, {queue:'front'});
 			if(g_adr.id.match(new RegExp("modifier_adresse:")) || g_adr.id.match(new RegExp("ajouter_adresse:")))
 			{
 				var idadresse = "";
 				var typeadresse = "";
 				if(g_adr.id.match(new RegExp("modifier_adresse:")))
 					idadresse = g_adr.id.replace("modifier_adresse:", "");
 				else
 					typeadresse = g_adr.id.replace("ajouter_adresse:", "");
				new Ajax.Request(urlaff, {
					asynchronous: 'true',
					postBody: 'tpl=front/utilisateur/adresse/formadresse&idadresse='+idadresse+'&typeadresse='+typeadresse,
					onSuccess: function (ahr)
					{
						new Effect.BlindUp(bloc, {queue:'front', afterFinish: function(){bloc.innerHTML = ahr.responseText;}});
						new Effect.BlindDown(bloc, {queue:'end', afterFinish: function(){bloc.scrollTo();}});
						new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
					}
				});
 			}
 			else
 			{
 				if(g_adr.id.match(new RegExp("defaut_adresse:")))
 				{
 					var idadresse = g_adr.id.replace("defaut_adresse:", "");
 					operationAdresse("defaut_adresse", idadresse, attente, en_cours);
 				}
 				if(g_adr.id.match(new RegExp("supprimer_adresse:")))
 				{
 					var idadresse = g_adr.id.replace("supprimer_adresse:", "");
 					operationAdresse("supprimer_adresse", idadresse, attente, en_cours);
 				}
 			}
 		}
 	},
 	
 	'.afficher_panier' : function(afficher) {
 		afficher.onclick = function() {
 			var bloc = $('detail_panier');
 			var en_cours = $('panier_encours');
 			var attente = $('message_attentepanier');
 			var idpanier = afficher.id.replace('afficher_panier:', '');
 			if(en_cours.value == '1')
				return;
			en_cours.value = '1';
			new Effect.Appear(attente, {queue:'front'});
			new Ajax.Request(urlaff, {
				asynchronous: 'true',
				postBody: 'tpl=front/utilisateur/panier/affichepanier&idpanier='+idpanier+'&page=46',
				onSuccess: function (ahr)
				{
					new Effect.BlindUp(bloc, {queue:'front', afterFinish: function(){bloc.innerHTML = ahr.responseText;}});
					new Effect.BlindDown(bloc, {queue:'end', afterFinish: function(){bloc.scrollTo();}});
					new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		}
 	},
 	
 	'.supprimer_panier' : function(supprimer) {
 		supprimer.onclick = function() {
 			var bloc = $('detail_panier');
 			var en_cours = $('panier_encours');
 			var attente = $('message_attentepanier');
 			var idpanier = supprimer.id.replace('supprimer_panier:', '');
 			var bloc_erreur = $('blocerreur_panier');
			var chPOST = "&checkedField=idpanier|"+
				"&fieldValue="+idpanier;
 			if(en_cours.value == '1')
				return;
			en_cours.value = '1';
			new Effect.Appear(attente, {queue:'front'});
			new Ajax.Request(urltask, {
				asynchronous: 'true',
				postBody: 'tache=suppressionpaniersauver'+chPOST,
				onLoading: function (xhr)
				{
					bloc_erreur.innerHTML = '';
				},
				onSuccess: function(xhr)
				{
					var result = treatTaskMsg(xhr.responseText);
					var msg_res = '';
					if(result == true)
					{
						msg_res = xhr.responseText.substr(13);
						tab_res = msg_res.split('|');
						msg_res = tab_res[0];
						if(tab_res.length == 1)
							window.location.replace(tab_res[0]);
						new Effect.SwitchOff(bloc, {queue:'end', afterFinish: function(){Behaviour.apply();}});
					}
					else
					{
						if(result == false)
							msg_res = xhr.responseText.substr(11);
					}
					new Effect.BlindUp(bloc_erreur, {queue:'end', afterFinish: function(){bloc_erreur.innerHTML = msg_res;}});
					new Effect.BlindDown(bloc_erreur, {queue:'end'});
					new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		}
 	},
 	
 	'.vider_panier' : function(vider) {
 		vider.onclick = function() {
 			var val = $('vider_panier_post').value;
 			var redirect = $('redirection_vider').value;
 			actionPanier(val, redirect);
 		}
 	},
 	
 	'.changer_adresse' : function(adresse) {
 		adresse.onclick = function() {
 			var en_cours = $('adresse_encours');
 			var attente = $('message_attenteadresse');
 			var type = adresse.id.replace('changer_adresse:', '');
 			var bloc = $('changement_adresse:'+type);
 			if(en_cours.value == '1')
				return;
			en_cours.value = '1';
			new Effect.Appear(attente, {queue:'front'});
			new Ajax.Request(urlaff, {
				asynchronous: 'true',
				postBody: 'tpl=front/commande/liste_adresse&type='+type,
				onSuccess: function (ahr)
				{
					new Effect.BlindUp(bloc, {queue:'front', afterFinish: function(){bloc.innerHTML = ahr.responseText;}});
					new Effect.BlindDown(bloc, {queue:'end', afterFinish: function(){bloc.scrollTo();}});
					new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		}
 	},
 	
 	'.choix_adresse' : function(choix) {
 		choix.onclick = function() {
 			var en_cours = $('adresse_encours');
 			var attente = $('message_attenteadresse');
 			var bloc_erreur = $('blocerreur_adresse');
 			var tabParam = choix.id.replace('choix_adresse:', '');
 			tabParam = tabParam.split(':');
 			var type = tabParam[0];
 			var idadresse = tabParam[1];
 			var bloc = $('recap_adresse');
 			if(en_cours.value == '1')
				return;
			en_cours.value = '1';
			new Effect.Appear(attente, {queue:'front'});
			var chPOST = "&checkedField=idadresse|typeadresse"+
						"&fieldValue="+idadresse+"|"+type;
			new Ajax.Request(urltask, {
				asynchronous: 'true',
				postBody: 'tache=commande/commande_changementadresse'+chPOST,
				onLoading: function (xhr)
				{
					bloc_erreur.innerHTML = '';
				},
				onSuccess: function(xhr)
				{
					var result = treatTaskMsg(xhr.responseText);
					var msg_res = '';
					if(result == true)
					{
						msg_res = xhr.responseText.substr(13);
						var redirection = $('redirection_adresse').value;
						window.location.replace(redirection);
					}
					else
					{
						if(result == false)
							msg_res = xhr.responseText.substr(11);
					}
					new Effect.BlindUp(bloc_erreur, {queue:'end', afterFinish: function(){bloc_erreur.innerHTML = msg_res;}});
					new Effect.BlindDown(bloc_erreur, {queue:'end'});
					new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		} 		
 	},
 	
 	'.lien_carousel' : function(lien) {
 		lien.onmouseover = function() {
 			var bloc = lien.id.replace('lien_carousel_', '');
 			var tabPosE = $('dhtml-carousel-item-'+bloc).viewportOffset();
 			if($('detail_produit_'+bloc))
	 		{
	 			$('detail_produit_'+bloc).style.position = 'fixed';
	 			$('detail_produit_'+bloc).style.left = (tabPosE[0] + 150)+'px';
	 			$('detail_produit_'+bloc).style.top = (tabPosE[1] - 40)+'px';
	 			$('detail_produit_'+bloc).style.display = "block";
	 		}
 		}
 		
 		lien.onmouseout = function() {
 			var bloc = lien.id.replace('lien_carousel_', '');
	 		if($('detail_produit_'+bloc))
	 		{
	 			$('detail_produit_'+bloc).style.display = "none";
	 		}
 		}
 	},
 	
 	'.lien_info' : function(lien) {
 		lien.onmouseover = function() {
 			var bloc = lien.id.replace('lien_info_', '');
 			if($(bloc))
 			{
 				$(bloc).style.display = "block";
 			}
 		}
 		
 		lien.onmouseout = function() {
 			var bloc = lien.id.replace('lien_info_', '');
	 		if($(bloc))
 			{
 				$(bloc).style.display = "none";
 			}
 		}
 	},
 	
 	'.validerForm' : function(form) {
 		form.onclick = function() {
 			var tabID = form.id.split(':');
 			if($('form_'+tabID[1]))
 			{
 				$('form_'+tabID[1]).submit();
 			}
 		}
 	},
 	
 	'.detail_commande' : function(detail) {
 		detail.onclick = function() {
 			var bloc = $('detail_commande');
 			var en_cours = $('commande_encours');
 			var attente = $('message_attentecommande');
 			var clepasse = detail.id.replace('detail_commande:', '');
 			if(en_cours.value == '1')
				return;
			en_cours.value = '1';
			new Effect.Appear(attente, {queue:'front'});
			var url_aff = siteencours+'module/ajax/index.php?module=affichagemoteur';
			new Ajax.Request(url_aff, {
				asynchronous: 'true',
				postBody: 'tpl=front/utilisateur/commande/detail_commande&clepasse='+clepasse,
				onSuccess: function (ahr)
				{
					new Effect.BlindUp(bloc, {queue:'front', afterFinish: function(){bloc.innerHTML = ahr.responseText;}});
					new Effect.BlindDown(bloc, {queue:'end', afterFinish: function(){bloc.scrollTo();}});
					new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
				}
			});
 		}
 	},
 	
 	'.zoneradio' : function(zone) {
 		zone.onclick = function() {
 			var radio = $(zone.id.replace('zone_',''));
 			radio.checked = true;
 		}
 	},

 	'.zoneradiolivraison' : function(zone) {
 		zone.onclick = function() {
 			var radio = $(zone.id.replace('zone_',''));
 			//reinit des backgrounds
 			var imgs = $$('.zoneradiolivraison_current');
 			for(var i = 0; i < imgs.length; i++)
 			{
 				var img = imgs[i];
 				img.className = img.className.replace('zoneradiolivraison_current', '');
 			}
 			//imgs.each(function(img) {img.className=img.className.replace('zoneradiolivraison_current', '');});
 			zone.className+=" zoneradiolivraison_current";
 			radio.checked = true;
 		}
 	},
 	
 	'.radiolivraison' : function(radio) {
 		radio.onclick = function() {
 			var zone = $('zone_'+radio.id);
 			//reinit des backgrounds
 			var imgs = $$('.zoneradiolivraison_current');
 			for(var i = 0; i < imgs.length; i++)
 			{
 				var img = imgs[i];
 				img.className = img.className.replace('zoneradiolivraison_current', '');
 			}
 			//imgs.each(function(img) {img.className=img.className.replace('zoneradiolivraison_current', '');});
 			zone.className+=" zoneradiolivraison_current";
 		}
 	},
 	
 	'#affichecgv' : function(cgv) {
 		cgv.onclick = function() {
 			var bloc = $('bloc_cgv');
 			if(bloc.style.display == "none")
 				new Effect.Appear(bloc, {afterFinish: function(){bloc.style.display = "block"; bloc.scrollTo();}});
 			else
 				new Effect.Fade(bloc, {afterFinish: function(){bloc.style.display = "none";}});
 		}
 	},
 	
 	'.fermer_bloc' : function(fermer) {
 		fermer.onclick = function() {
 			var blocToClose = fermer.id.replace("fermer_bloc_", "");
 			if($(blocToClose))
 			{
 				new Effect.Fade($(blocToClose), {duration:0.2});
 			}
 		}
 	},
 	
 	'#formtypecompte' : function(typecompte) {
 		if(init == false)
 		{
 			updateFormInscription(typecompte);
 		}
 		typecompte.onchange = function() {
 			updateFormInscription(typecompte);
 		}		
 	},
 	
 	'.btn_paiement' : function(paiement) {
 		paiement.onclick = function() {
 			new Ajax.Request(urltask, {
				asynchronous: 'true',
				postBody: 'tache=commande/commande_attentepaiement',
				onSuccess: function(xhr)
				{
					var result = treatTaskMsg(xhr.responseText);
					var msg_res = '';
					if(result == true)
					{
						if($('PaymentRequest'))
						{
							$('PaymentRequest').submit();
						}
					}
					else
					{
						if(result == false)
						{
							window.location.replace(xhr.responseText.substr(11));
						}
					}
				}
			});
 		}
 	},
 	
 	'.poster_commentaire' : function(comm) {
 		comm.onclick = function() {
 			if($('conteneur_commentaire') && $('comm_idproduit') && $('comm_table'))
 			{
 				var bloc = $('conteneur_commentaire');
	 			var idproduit = $('comm_idproduit').value;
	 			var table = $('comm_table').value;
	 			new Ajax.Request(urlaff, {
					asynchronous: 'true',
					postBody: 'tpl=front/catalogue/commentaire/form&idproduit='+idproduit+'&table='+table,
					onSuccess: function (ahr)
					{
						bloc.update(ahr.responseText);
						bloc.style.display = "block";
						Behaviour.apply();
					}
				});
 			}
 		}
 	},
 	
 	'a.liste_note' : function(note) {
 		note.onclick = function() {
 			var num = note.id.replace('note_', '');
 			if($('formnote'))
 			{
 				$('formnote').value = num;
 				var lst = $$('a.liste_note');
 				for(var i=0; i < lst.length; i++)
 				{
 					lst[i].className = 'liste_note';
 				}
 				note.className = 'liste_note current';
			}
 		}
 	},
 	
 	'.lien_avis' : function(aff) {
 		aff.onclick = function() {
 			if($('bloc_lien_avis') && $('comm_idproduit') && $('comm_table'))
 			{
 				var bloc = $('bloc_lien_avis');
 				var idproduit = $('comm_idproduit').value;
	 			var table = $('comm_table').value;
 				new Ajax.Request(urlaff, {
					asynchronous: 'true',
					postBody: 'tpl=front/catalogue/commentaire/liste&idproduit='+idproduit+'&table='+table,
					onSuccess: function (ahr)
					{
						bloc.update(ahr.responseText);
						bloc.style.display = "block";
						Behaviour.apply();
					}
				});
 			}
 		}
 	}
};
// Enregistrement des regles definies ci dessus dans Behaviour
Behaviour.register(myrules);

function updateFormInscription(typecompte)
{
	init = true;
	var msgAttente = $('attenterecord_nouveauclient');
	var bloc_content = $('contenu_typecompte');
	new Effect.Appear(msgAttente, {duration:0.2});
	if(typecompte.value >= 1)
	{
		new Ajax.Request(urlaff, {
			asynchronous: 'true',
			postBody: 'tpl=front/utilisateur/typecompte/compte_'+typecompte.value,
			onSuccess: function (ahr)
			{
				bloc_content.update(ahr.responseText);
				new Effect.Fade(msgAttente, {duration:0.2});
				Behaviour.apply();
			}
		});
	}
	else
	{
		bloc_content.update("");
		new Effect.Fade(msgAttente, {duration:0.2});
	}
}

function operationAdresse(type, idadresse, attente, en_cours)
{
 	var bloc_erreur = $('blocerreur_gestion_adresse');
	var chPOST = "&checkedField=idadresse|"+
				"&fieldValue="+idadresse;
	new Ajax.Request(urltask, {
		asynchronous: 'true',
		postBody: 'tache='+type+chPOST,
		onLoading: function (xhr)
		{
			bloc_erreur.innerHTML = '';
		},
		onSuccess: function(xhr)
		{
			var result = treatTaskMsg(xhr.responseText);
			var msg_res = '';
			if(result == true)
			{
				msg_res = xhr.responseText.substr(13);
				updateTemplate('adresse');
			}
			else
			{
				if(result == false)
					msg_res = xhr.responseText.substr(11);
			}
			new Effect.BlindUp(bloc_erreur, {queue:'end', afterFinish: function(){bloc_erreur.innerHTML = msg_res;}});
			new Effect.BlindDown(bloc_erreur, {queue:'end'});
			new Effect.SwitchOff(attente, {queue:'end', afterFinish: function(){en_cours.value = '0'; Behaviour.apply();}});
		}
	});
}

function updateTemplate(typeE)
{
	if($('tpltoupdate:'+typeE))
	{
		var tpltoupdate = $('tpltoupdate:'+typeE).value;
		var bloctoupdate = $('bloctoupdate:'+typeE).value;
		var tabTplToUpdate = tpltoupdate.split('|');
		var tabBlocToUpdate = bloctoupdate.split('|');
	}
	else
	{
		var tabTplToUpdate = [];
		var tabBlocToUpdate = [];
	}
	for(var i = 0; i < tabTplToUpdate.length; i++)
	{
		var valeur_update = $(tabBlocToUpdate[i]+'_update').value;
		var tabValeur = valeur_update.split('|');
		var chPOST = '';
		for(var j = 0; j < tabValeur.length; j++)
		{
			var valpost = tabValeur[j].split(':');
			chPOST += '&'+valpost[0]+'='+valpost[1];
		}
		var formupdate = tabTplToUpdate[i];
		var blocupdate = $(tabBlocToUpdate[i]);
		new Ajax.Request(urlaff, {
			asynchronous: 'true', 
			postBody: 'tpl='+formupdate+chPOST,
			onComplete: function(zhr)
			{
				blocupdate.innerHTML = zhr.responseText;
				Behaviour.apply();
			}
		});
	}
}

function actionPanier(val, redirect)
{
	var message = $('ajax_msg_panier');
	var ajax_erreur = $('ajax_erreur_panier');
	var en_cours = $('ajout_encours_panier');
	
	if(en_cours.value == '1')
		return;
	
	en_cours.value = '1';
	new Effect.BlindDown(message, {queue:'front'});
	new Ajax.Request(urlpanier, {
		asynchronous: 'true',
		postBody: 'panier_produit='+val,
		onFailure: function (xhr)
		{
			new Effect.Fade(message, {queue:'end', afterFinish: function(){en_cours.value = '0';}});
			new Effect.Appear(ajax_erreur, {queue:'end', duration:0.2});
			new Effect.Fade(ajax_erreur, {queue:'end', duration:0.8});
		},
		onSuccess: function(fhr)
		{
			new Effect.Fade(message, {queue:'end', afterFinish: function(){en_cours.value = '0';}});
			if(redirect != "")
				window.location.replace(redirect);
		}
	});
}