
// Variables globales
var chrono 				= null;
var chrono_special		= null;
var quest_event_click 	= false;
var do_reporting 		= true;
var xml_script_url 		= 'xml_request.php';
var xml_process 		= false;
var xml_msg 			= '';
var quick_search_active = false;
var global_event 		= null;
var basket_content      = 0;
var product_is_subscription = false;

/* AVATAR */

function preview_avatar()
{
	var img_src_to_preview=$("#avatar_public").val();
	if (img_src_to_preview!='') $("#avatar_preview").attr("src", "contenu/image/avatar/"+img_src_to_preview);
	else $("#avatar_preview").attr("src", img_src_original);
}

/* Fil info pour actu & home */

function show_fil_info(id)
{
	$("#fil_info_filtre a").removeClass("actif");
	$("#fim"+id).addClass("actif");
	$("#fil_info_content").html('<i class="fa fa-spinner fa-spin"></i>');
	$.post( xml_script_url, 
				{ a: 'get_fil_info', id: id }, 
				function(data) { 
					eval(data);
					if (xml_process) $("#fil_info_content").html(html);
				});
}

/* QUICK SEARCH */

function quick_search(evenement)
{
	window.clearTimeout(chrono);
	global_event = evenement;

	// On attend 1 demi seconde avant de lancer la recherche
	// pour permettre à l'internaute de finir de taper sur son clavier

	chrono       = setTimeout(do_quick_search, 500);
}

function show_quick_search()
{
	var str=$("#str_to_search").val();
	if (!quick_search_active)
	{
		quick_search_active = true;
		$("#quick_search_main").addClass('search_active');
	}
	if (str!='') $("#quick_search").show();
	else $("#quick_search").hide();
}

function hide_quick_search()
{
	if (quick_search_active)
	{
		quick_search_active = false;
		$("#quick_search_main").removeClass('search_active');
		$("#quick_search").hide();
	}
}

function do_quick_search()
{
	window.clearTimeout(chrono);
	
	var str=$("#str_to_search").val();
	var touche = window.event ? global_event.keyCode : global_event.which;
	if (touche==13 && str.length>2) do_search();
	else if (str.length>2)
	{
		show_quick_search();
		//$("#btn_search").html('<i class="fa fa-spinner fa-spin"></i>');
		$.post( xml_script_url, 
				{ a: 'quick_search', q: str }, 
				function(data) { 
					eval(data);
					if (xml_process)
					{
						$("#quick_search").html(html);
					}
					//$("#btn_search").html('<i class="fa fa-search"></i>');
		});
	}
}

function do_search()
{
	var search_string=$("#str_to_search").val();
	go_to( 'recherche.php?q='+encodeURIComponent(search_string) );
	return false;
}

/* Filtre */

function do_filter(obj)
{
	var filter_name  = obj.id;
	var filter_value = obj.options[obj.selectedIndex].value;
	var a  = getQuerystring('a','');
	var id = getQuerystring('id','');

	var url = window.location.pathname + "?";

	if (a!='') url += "a=" + a + '&';
	if (id!='') url += "id=" + id + '&';
	url += filter_name + "=" + filter_value;
	window.location.href = url + '#hp_catalogue_select';
}

function do_text_filter(obj)
{
	var filter_name  = obj.id;
	var filter_value = obj.value;
	var a  = getQuerystring('a','');
	var id = getQuerystring('id','');

	var url = window.location.pathname + "?";

	if (a!='') url += "a=" + a + '&';
	if (id!='') url += "id=" + id + '&';
	url += filter_name + "=" + filter_value;
	window.location.href = url + '#hp_catalogue_select';
}

function getQuerystring(key, default_)
{
	if (default_==null) default_=""; 

	key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

	var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
	var qs = regex.exec(window.location.href);

	if (qs == null) return default_; else return qs[1];
}

/* Redirection */

function go_to(url)
{
	document.location.href = url ;
}

/* BUG Sizing du Slider */

var slider_to_resize = '';

function resize_slider(id)
{
	slider_to_resize = id;
	window.clearTimeout(chrono);
	chrono = setTimeout(do_resize_slider, 250);
}

function do_resize_slider()
{
	window.clearTimeout(chrono);
	if (slider_to_resize!='')
	{
		$("#"+slider_to_resize).royalSlider('updateSliderSize');
		slider_to_resize='';
	}
}

/* PANIER */

function basket_animate(panier)
{
	/*
	if ($("#info_mon_panier").hasClass('off')) $("#info_mon_panier").removeClass('off');
	else if (panier[0]==0) $("#info_mon_panier").addClass('off');
	*/

	if (panier[0]>0)
	{
		// '+formate_nombre(panier[1])+'&euro; 
		$("#infoCart b").html('<span class="badge badge-red">'+panier[0]+'</span>');
		$(".nbItemsInCart").html(panier[0]);
	}
	else
	{
		$("#infoCart b").html('');
		$(".nbItemsInCart").html('&nbsp;');
	}
}

function formate_nombre(nombre)
{
	var str=nombre.toFixed(2)+'';
	return str.replace('.',',');
}

async function pdf_add_to_basket(id)
{
	var panier = new Array();
	xml_msg='';

	product_is_subscription = false;
	await get_basket_content()

	if (basket_content==2) await workflow_subscription('pdf',id,1,null,false);
	else
		$.post( xml_script_url, 
			{ a: 'pdf_add_to_basket', pdf_id: id, qt: 1 }, 
			function(data) {
				// console.log('data = ' + data);
				eval(data);
				if (xml_process && xml_msg=='')
				{
					if (panier[0]>0) basket_animate(panier);
					alertify.notify('<i class="fa fa-shopping-cart"></i> PDF ajouté au panier', "success", 3, function(){});
					
					// Tracking Facebook
					if (typeof fbq !== 'undefined') fbq("track", "AddToCart", {content_ids: [content_id], content_type: "product", content_name: content_name, content_category: "PDF", value: content_value, currency: "EUR"});
				}
				else if (xml_msg!='') alertify.notify('<i class="fa fa-shopping-cart"></i> '+xml_msg, "error", 3, function(){});
				else alertify.notify('<i class="fa fa-shopping-cart"></i> Impossible d\'ajouter le PDF au panier', "error", 3, function(){});
		});
}

async function produit_add_to_basket(id,qt)
{
	var panier = new Array();
	xml_msg = '';

	await is_subscription(id)
	await get_basket_content()
	// console.log('basket_content = '+basket_content+' / product_is_subscription = '+product_is_subscription)

	if (basket_content==2 || (product_is_subscription && basket_content==1)) await workflow_subscription('produit',id,qt,null,false);
	else
		$.post( xml_script_url, 
			{ a: 'add_to_basket', produit_id: id, qt: qt }, 
			function(data) {
				// console.log('data = ' + data);
				eval(data);
				if (xml_process)
				{
					if (product_is_subscription) go_to('panier.php');
					if (panier[0]>0) basket_animate(panier);
					if (panier[3]=='') panier[3] = 'Message par defaut !';
					alertify.notify('<i class="fa fa-shopping-cart"></i> ' + panier[3], (panier[2]!=true?'error':'success'), 3, function(){});

					// Tracking Facebook
					if (typeof fbq !== 'undefined')  fbq("track", "AddToCart", {content_ids: [content_id], content_type: "product", content_name: content_name, value: content_value, currency: "EUR"});
				}
		});
}

async function produit_variante_add_to_basket(id,qt,options,reporting)
{
	var panier = new Array();
	xml_msg='';

	product_is_subscription = false;
	await get_basket_content()

	if (basket_content==2) await workflow_subscription('produit_complexe',id,qt,options,reporting);
	else
	{
		var carac  = new Array();
		for (i=1;i<=3;i++)
			if ($("#produit_carac"+i).length) carac[i]=parseInt($("#produit_carac"+i).val());
			else carac[i]=0;

		if (basket_content!=2)
			$.post( xml_script_url, 
				{ a: 'add_to_basket', produit_id: id, qt: qt, carac1: carac[1], carac2: carac[2], carac3: carac[3], options: options }, 
				function(data) { 
					// console.log('data = ' + data);
					eval(data);
					if (xml_process)
					{
						if (panier[0]>0) basket_animate(panier);
						if (panier[3]=='') panier[3] = 'Message par defaut !';
						alertify.notify('<i class="fa fa-shopping-cart"></i> ' + panier[3], (panier[2]!=true?'error':'success'), 3, function(){});

						// Tracking Facebook
						if (typeof fbq !== 'undefined')  fbq("track", "AddToCart", {content_ids: [content_id], content_type: "product", content_name: content_name, value: content_value, currency: "EUR"});
					}
			});
	}

	
}

async function workflow_subscription(type,id,qt,options,reporting)
{
	var content = -1;
	xml_msg = '';

	if (basket_content==1) // Le panier contient des produits ou des PDF
		await alertify.confirm().setting({
			'labels':{ ok:'Confirmer', cancel:'Annuler' },
			'closable': false,
			'message': '<b>⚠ Attention</b><br>Chaque abonnement doit être acheté séparément et votre panier contient déjà des produits.<br><p style="margin-top: 10px;"><b>Etes-vous sur de vouloir acheter cet abonnement ?</b><br><i class="T11">Vos produits seront retirés du panier</i></p>' ,
			'onok': async function(){ 
				var result = await empty_basket();
				if (type=='produit_complexe') produit_variante_add_to_basket(id,qt,options,reporting)
				else if (type=='pdf') pdf_add_to_basket(id)
				else produit_add_to_basket(id,qt)
			},
			'onclose': function(){}
		}).show();

	else if (basket_content==2) // Le panier contient déjà un abonnement
		await alertify.confirm().setting({
			'labels':{ ok:'Confirmer', cancel:'Annuler' },
			'closable': false,
			'message': '<b>⚠ Attention</b><br>Chaque abonnement doit être acheté séparément et votre panier contient déjà un abonnement.<br><p style="margin-top: 10px;"><b>Etes-vous sur de vouloir acheter ce ' + type + ' ?</b><br><i class="T11">Votre abonnement sera retiré du panier</i></p>' ,
			'onok': async function(){
				var result = await empty_basket();
				if (type=='produit_complexe') produit_variante_add_to_basket(id,qt,options,reporting)
				else if (type=='pdf') pdf_add_to_basket(id)
				else produit_add_to_basket(id,qt)
			},
			'onclose': function(){}
		}).show();
}

async function get_basket_content()
{
	const result = await $.post( xml_script_url, 
		{ a: 'basket_content' }, 
		function(data) { 
			// console.log('data = ' + data);
			eval(data);
			if (xml_process) basket_content = content;
	});
	return result;
}

async function is_subscription(id)
{
	var subscription = false
	if (id>0) 
	var result = await $.post( xml_script_url, 
		{ a: 'product_is_subscription', produit_id: id }, 
		function(data) { 
			eval(data);
			if (xml_process) product_is_subscription = subscription;
			else product_is_subscription = false;
	});
	return result;
}

async function empty_basket()
{
	basket_content = 0;
	const result = await $.post( xml_script_url, 
		{ a: 'empty_basket' }, 
		function(data){}
	); 
	return result;
}

/* QUICK VIEW */

function produit_quick_view_hide()
{
	$('#produit_quick_view').modal('hide');
}

function produit_quick_view(produit_id)
{
	var html  = '';
	var title = '';

	if (produit_id>0)
	{
		$('#produit_quick_view').modal();

		$("#produit_quick_view .modal-body").html('<h1 class="aC"><i class="fa fa-spinner fa-spin"></i><h1>');

		$.post( xml_script_url, 
				{ a: 'quick_view', produit_id: produit_id }, 
				function(data) { 
					eval(data);
					if (xml_process)
					{
						$("#produit_quick_view .modal-body").html(html);
					}
		});
	}
}

/* ************************* */
/*       SELECT MEMBER       */
/* ************************* */

var focus_on_search_member = new Array(false,false);

function search_member(evenement)
{
	window.clearTimeout(chrono);
	global_event = evenement;

	chrono       = setTimeout(do_search_member, 500);
}

function show_suggestion()
{
	$("#member_suggestion").show();
}

function hide_suggestion()
{
	if (!focus_on_search_member[0] && !focus_on_search_member[1])
	{
		window.clearTimeout(chrono);
		chrono = setTimeout(do_hide_suggestion, 200);
	}
}

function do_hide_suggestion()
{
	$("#member_suggestion").hide();
}

/* ****************** */
/*       Forums       */
/* ****************** */

var displayed_author_id = -1;
var displayed_actions   = 0;
var use_ckeditor        = true;

function confirm_forum_all_read()
{
	alertify.confirm().setting({
		'labels':{ok:'Confirmer', cancel:'Annuler'},
		'closable': false,
		'message': 'Etes-vous sur de vouloir marquer tout le forum comme ayant été lu ?' ,
		'onok': function(){
			go_to('forums.php?a=forum_all_read');
		},
		'onclose': function(){}
	}).show();
}

function confirm_board_all_read(board_id)
{
	alertify.confirm().setting({
		'labels':{ok:'Confirmer', cancel:'Annuler'},
		'closable': false,
		'message': 'Etes-vous sur de vouloir marquer tout les sujets de ce forum comme ayant été lus ?' ,
		'onok': function(){
			go_to('forums.php?a=board_all_read&board_id='+board_id);
		},
		'onclose': function(){}
	}).show();
}

function cancel_reply()
{
	if (use_ckeditor) CKEDITOR.instances['commentaire'].setData('');
	else $("#commentaire").text('');
	$("#commentaire_info").html('');
	$("#form_id").val(0);
	$("#form_parent_id").val(0);
	$("#form_parent_auteur_id").val(0);
	switch_form_reply();
}

function reply(id, topic_id, copy_content, auteur)
{
	var html = '';

	if ($("#form_reply").hasClass('off')) switch_form_reply();

	$("#form_id").val(0);

	if (copy_content) 						// Citer
	{
		$("#form_parent_id").val(0);
		$("#form_parent_auteur_id").val(0);
	}
	else 									// Répondre
	{
		$("#form_parent_id").val(id);
		$("#form_parent_auteur_id").val(auteur);
	}
	
	$.post( xml_script_url, 
		{ a: 'get_message_content', id: id, methode: 'quote' }, 
		function(data) { 
			eval(data);
			if (xml_process)
			{
				if (use_ckeditor)
				{
					if (!copy_content) html='<p> </p>';
					CKEDITOR.instances['commentaire'].setData(html);
				}
				else
				{
					if (!copy_content) html='';
					$("#commentaire").text(html);
				}

				$("#commentaire_info").html('<a href="#msg'+id+'"><i class="fa fa-chevron-circle-up"></i></a>'
					+' Rédigez une réponse au commentaire n°'+id
					+' <a href="javascript:cancel_reply()" class="btn btn-sm btn-link"><i class="fa fa-close"></i> Annuler</a>');
			}
			$('html,body').animate( {scrollTop: $("#form_reply").offset().top }, 500);
	});
}

function edit(id, topic_id)
{
	var html = '';

	if ($("#form_reply").hasClass('off')) switch_form_reply();

	$("#form_id").val(id);
	$("#form_parent_id").val(0);
	$("#form_parent_auteur_id").val(0);
	
	$.post( xml_script_url, 
		{ a: 'get_message_content', id: id, methode: 'edit' }, 
		function(data) { 
			eval(data);
			if (xml_process)
			{
				if (use_ckeditor) CKEDITOR.instances['commentaire'].setData(html);
				else $("#commentaire").text(html);

				$("#commentaire_info").html('<a href="#msg'+id+'"><i class="fa fa-chevron-circle-up"></i></a>'
					+' Editez le commentaire n°'+id
					+' <a href="javascript:cancel_reply()" class="btn btn-sm btn-link"><i class="fa fa-close"></i> Annuler</a>');
			}
			$('html,body').animate( {scrollTop: $("#form_reply").offset().top }, 500);
	});
}

function switch_form_reply()
{
	if ($("#form_reply").hasClass('on')) // Masquage
	{
		$("#form_reply").slideUp(300, function(){
			$("#form_reply").removeClass('on').addClass('off');
		});
		$("#switch_reply").html('<i class="fa fa-pencil"></i> Rédiger une réponse...');
	}
	else // Affichage
	{
		$("#form_reply").slideDown(300, function(){
			$("#form_reply").removeClass('off').addClass('on');
		});
		$("#switch_reply").html('<i class="fa fa-close"></i> Masquer le formulaire');
	}
}

function follow(id)
{
	$.post( xml_script_url, 
		{ a: 'follow_topic', id: id }, 
		function(data) { 
			eval(data);
			if (xml_process)
			{
				if (xml_msg=='subscribed')
				{
					$('.btn_follow_topic').removeClass('btn-default').addClass('btn-warning').html('<i class="fa fa-star"></i> Vous suivez ce sujet');
					alertify.success('Vous suivez désormais ce sujet');
				}
				else
				{
					$('.btn_follow_topic').removeClass('btn-warning').addClass('btn-default').html('<i class="fa fa-star-o"></i> Suivre ce sujet');
					alertify.warning('Vous ne suivez plus ce sujet');
				}
			}
	});
}

function report(id)
{
	alertify.confirm().setting({
		'labels':{ok:'Signaler', cancel:'Annuler'},
		'closable': false,
		'message': 'Etes-vous sur de vouloir signaler ce message ?' ,
		'onok': function(){
			$.post( xml_script_url, 
				{ a: 'message_report', id: id }, 
				function(data) { 
					eval(data);
					if (xml_process)
					{
						if (xml_msg!='') alertify.warning( xml_msg );
						else alertify.success( 'Message signalé au modérateur' );
					}
			});
		},
		'onclose': function(){}
	}).show();
}

function like(id)
{
	var nb_like 	= $('#msg'+id).data("like");
	var nb_dislike 	= $('#msg'+id).data("dislike");
	var current 	= $('#msg'+id).data("current");

	$.post( xml_script_url, 
		{ a: 'message_like', id: id }, 
		function(data) { 
			eval(data);
			if (xml_process)
			{
				if (current=='like')
				{
					$('#msg'+id).data("current",'none');
					$('#msg'+id).data("like",nb_like-1);
					$('#msg'+id+' .like').removeClass('selected');
					$('#msg'+id+' .like').html( html_compteur(id,'like') );
				}
				else
				{
					if (current=='dislike')
					{
						$('#msg'+id).data("dislike",nb_dislike-1);
						$('#msg'+id+' .dislike').removeClass('selected');
						$('#msg'+id+' .dislike').html( html_compteur(id,'dislike') );
					}
					$('#msg'+id+' .like').addClass('selected');
					$('#msg'+id).data("like",nb_like+1);
					$('#msg'+id).data("current",'like');

					$('#msg'+id+' .like').html( html_compteur(id,'like') );
				}
			}
	});
}

function dislike(id)
{
	var nb_like 	= $('#msg'+id).data("like");
	var nb_dislike 	= $('#msg'+id).data("dislike");
	var current 	= $('#msg'+id).data("current");

	$.post( xml_script_url, 
		{ a: 'message_dislike', id: id }, 
		function(data) { 
			eval(data);
			if (xml_process)
			{
				if (current=='dislike')
				{
					$('#msg'+id).data("current",'none');
					$('#msg'+id).data("dislike",nb_dislike-1);
					$('#msg'+id+' .dislike').removeClass('selected');
					$('#msg'+id+' .dislike').html( html_compteur(id,'dislike') );
				}
				else
				{
					if (current=='like')
					{
						$('#msg'+id).data("like",nb_like-1);
						$('#msg'+id+' .like').removeClass('selected');
						$('#msg'+id+' .like').html( html_compteur(id,'like') );
					}
					$('#msg'+id+' .dislike').addClass('selected');
					$('#msg'+id).data("dislike",nb_dislike+1);
					$('#msg'+id).data("current",'dislike');
					$('#msg'+id+' .dislike').html( html_compteur(id,'dislike') );
				}
			}
	});
}

function html_compteur(id,action)
{
	var thumb='down';
	var nb = $('#msg'+id).data(action);
	if (action=='like') thumb='up';
	return '<i class="fa fa-thumbs-o-'+thumb+'"></i> ' + (nb>0?nb:'');
}

/* QUICK VIEW : Affiche le détail */

function produit_show_detail(id)
{
	$("#produit_"+id+" .pr_lib").hide();
	$("#produit_"+id+" .pr_detail").show();
}

function produit_hide_detail(id)
{
	$("#produit_"+id+" .pr_lib").show();
	$("#produit_"+id+" .pr_detail").hide();
}

/* EVENT QUEST : The Rabbit Curse */

function show_rabbit(x,y)
{
	$('#rabbit').animate(
		{ opacity: 1, top: x, left: y }, 
		2000, 
		function() { 
			chrono_special = setTimeout(auto_hide_rabbit, 5000); 
		}
	);
}

function auto_hide_rabbit()
{
	quest_event_click=true;
	window.clearTimeout(chrono_special);
	$('#rabbit').css('background-image', 'url("img/rabbit_curse.png")');  
	chrono_special = setTimeout(rabbit_end, 2000);
	$.post( xml_script_url, 
			{ a: 'event_quest_rabbit_curse', action: 'curse' }, 
			function(data) {}
	);
}

function kill_the_rabbit()
{
	if (!quest_event_click)
	{
		quest_event_click=true;
		window.clearTimeout(chrono_special);
		$('#rabbit').css('background-image', 'url("img/rabbit_splash.png")');
		chrono_special = setTimeout(rabbit_end, 500);
		$.post( xml_script_url, 
			{ a: 'event_quest_rabbit_curse', action: 'kill' }, 
			function(data) {}
	);
	}
}

function rabbit_end()
{
	window.clearTimeout(chrono_special);
	$('#rabbit').animate( { opacity: 0 }, 1000, function() { 
		$('#rabbit').remove();
	});
}

/* EVENT QUEST : DRAGON wants you */

function dragon_do(action)
{
	if (action=='note')
	{
		go_to(xml_script_url+'?a=event_quest_dragon&action=note')
	}
	else if (action=='close')
	{
		$.post( xml_script_url, 
			{ a: 'event_quest_dragon', action: 'close' }, 
			function(data) {
				$('#dragon_ask').remove();
			}
		);
	}
	else if (action=='only_close')
	{
		$('#dragon_ask').remove();
	}
	else alertify.error('Ne réveillez pas le dragon...');
}
