hideWaitDialog = function() {
	$('#waitdialog').hide();
};
showWaitDialog = function() {
	$('#waitdialog').fadeIn({duration: 1000, queue: false});
};
function scrollToElement(elemObj){
	try{
	var elem=elemObj.offset().top - 10;
	$( "html, body" ).animate({scrollTop: elem}, 500 );
	}catch(ex){}
}

function scrollUp(elemObj){
	if (elemObj && elemObj.length > 0){
		var scroll = $( "html" ).scrollTop();
		if (scroll == 0){scroll = $( "body" ).scrollTop();}
		var headerHeight = 69;
		var elem=elemObj.offset().top - headerHeight - 100;
		if (scroll>elem) {
			$( "html, body" ).animate({scrollTop: elem}, 300 );
		}
	}
}
function scrollTo(elemObj){
	if (elemObj && elemObj.length > 0){
		var headerHeight = 69;
		var elem=elemObj.offset().top - headerHeight - 10;
		$( "html, body" ).animate({scrollTop: elem}, 300 );
	}
}

/**
*  Javascript effets du template fourni par les Editions Dupuis
*
 */
 
faqLink = function() { $( ".part-faq-link .faq-link" ).on( "click", function(){
		var e = $( this ).parent( ".part-faq-link" );
		$( ".part-faq-link" ).not( e ).removeClass( "active" ), e.toggleClass( "active" );
	});
};

infobulle = function() { $( ".info-bulle" ).on( "mouseover", function(){
		$(this).find(".info--more").removeClass( "cacher" );
	} ).on( "mouseout", function() {
		$(this).find(".info--more").addClass( "cacher" );
	} );
};

function infobullecompteMontrer(idinfobulle) {
	if ($(window).width() > 850) { // not smartphone
		document.getElementById(idinfobulle).classList.remove('cacher');
		
		//for all info--more-cpte cacher les
		var messages = document.querySelectorAll(".info--more-cpte");
		for (var i = 0; i < messages.length; i++) {
			if(document.getElementById(idinfobulle) != messages[i]) {
				messages[i].classList.add('cacher');
			}
		}
	}
	
}

function infobullecompteCacher(idinfobulle) { 
	if ($(window).width() > 850) { // not smartphone
		document.getElementById(idinfobulle).classList.add('cacher');
	}
}

function infobullecompteClick(idinfobulle) { 
	
	if(document.getElementById(idinfobulle).classList.contains('cacher')) {
		document.getElementById(idinfobulle).classList.remove('cacher');
		
		//for all info--more-cpte cacher les
		var messages = document.querySelectorAll(".info--more-cpte");
		for (var i = 0; i < messages.length; i++) {
			if(document.getElementById(idinfobulle) != messages[i]) {
				messages[i].classList.add('cacher');
			}
		}
	}
	// sinon on ajoute la classe active
	else {
		
		document.getElementById(idinfobulle).classList.add('cacher');
	}
}

function activeMenuMobile() {
	// contient la classe active, on enleve la classe active
	if(document.getElementById("btnMenuMobile").classList.contains('active')) {
		document.getElementById("btnMenuMobile").classList.remove("active");
		document.getElementById("asideMenuMobile").classList.remove("active");
	}
	// sinon on ajoute la classe active
	else {
		document.getElementById("btnMenuMobile").classList.add("active");
		document.getElementById("asideMenuMobile").classList.add("active");
	}
}

function changeCheckboxEncocheValue(ele, labelonoff, onoffField, idnogift, idyesgift) {
	if(ele.checked) {
		$( labelonoff ).attr("data-checked","true");
		$( onoffField ).attr("data-checked","true");
		document.getElementById(idnogift).style.display = "none";
		document.getElementById(idyesgift).style.display = "inline-block";
	} else {
		$( labelonoff ).attr("data-checked","false");
		$( onoffField ).attr("data-checked","false");
		document.getElementById(idnogift).style.display = "inline-block";
		document.getElementById(idyesgift).style.display = "none";
	}
}

function changeCheckboxSquareValue(ele, idlabel) {
	if(ele.checked) {
		$( idlabel ).attr("data-checked","true");
	} else {
		$( idlabel ).attr("data-checked","false");
	}
}

function changeCheckboxSquareInverserValue(ele, idlabel) {
	if(ele.checked) {
		$( idlabel ).attr("data-checked","false");
	} else {
		$( idlabel ).attr("data-checked","true");
	}
}

function cacherMontrerMotDePasse(idInputMdp,togglePasswordOpen,togglePasswordClosed) {
	// toggle the type attribute
	const type = document.querySelector('input[id="' + idInputMdp + '"]').getAttribute('type') === 'password' ? 'text' : 'password';
	document.querySelector('input[id="' + idInputMdp + '"]').setAttribute('type', type);
	// toggle the eye slash icon
	document.getElementById(togglePasswordOpen).style.display = (type === 'password' ? 'block' : 'none' );
	document.getElementById(togglePasswordClosed).style.display = (type === 'password' ? 'none' : 'block' );
}

function showHMC(id) {
	if(document.getElementById(id)) {
		if(document.getElementById(id).style.display != 'block') {
			document.getElementById(id).style.display = 'block';
		}
	}
	
}

function hideHMC(id) {
	if(document.getElementById(id)) {
		if(document.getElementById(id).style.display != 'none') {
			setTimeout( function(){
				document.getElementById(id).style.display = 'none';
			}, 60);
		}
	}
}

function bodyEventFct() {
	hideHMC('hmc');
}

function validateEmail(email){
  return email.match(
    /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  );
}

var check = function() {
  if (document.getElementById('password').value == document.getElementById('verify_password').value) {
    //document.documentElement.style.setProperty('--color-arrow-tooltip', "green transparent transparent transparent");
    document.getElementById('tooltiptext-confmdp').classList.add("green");
    document.getElementById('tooltiptext-confmdp').classList.remove("red");
    document.getElementById('tooltiptext-confmdp').innerHTML = 'Vérification du mot de passe OK !';
  } else {
    //document.documentElement.style.setProperty('--color-arrow-tooltip', "red transparent transparent transparent");
    document.getElementById('tooltiptext-confmdp').classList.remove("green");
    document.getElementById('tooltiptext-confmdp').classList.add("red");
    document.getElementById('tooltiptext-confmdp').innerHTML = 'La vérification de mot de passe et le mot de passe ne sont pas identiques .';
  }
}

function removecolorArrowTooltipMdp() {
	document.getElementById('tooltiptext-confmdp').classList.remove("green");
    document.getElementById('tooltiptext-confmdp').classList.remove("red");
}

function checkAdrEmail (element) {
	if(!validateEmail(element.value)) {
		// afficher le tooltip
		document.getElementById("tooltiptext-adrmail").style.visibility = "visible";
		document.getElementById("tooltiptext-adrmail").style.opacity = 1;
	} else {
		// cacher le tooltip
		document.getElementById("tooltiptext-adrmail").style.visibility = "hidden";
		document.getElementById("tooltiptext-adrmail").style.opacity = 0;
	}
}

function hideTooltiptextAdrmail () {
	// cacher le tooltip
	document.getElementById("tooltiptext-adrmail").style.visibility = "hidden";
	document.getElementById("tooltiptext-adrmail").style.opacity = 0;
}

var processCommandEvent, showWaitDialog, hideWaitDialog, handleErrorRequest, startAjaxPost, completeAjaxPost, nfProcessAjaxEvent, removeError;

window.onclick = () => {
	hideHMC('hmc');
}

$(document).ready(function() {
	
	faqLink();
	infobulle();
	
	handleErrorRequest = function(xhr, status, args) {
			if (args.validationFailed || args.error) {
				//if (args.validationFailed) {
					$('.alertmsg').html(
							'<div class="form-msg-error">'+
							'<img src="/site/dupuis2/default/fr/static/picto-caution.png" alt="">'+
							'Attention, il y a des erreurs de validation. Merci de les corriger.'+
							'</div>');
				//}
				//$(window).scrollTop(0);
				scrollTo($(".incomplete").first());
			}
		};
	processCommandEvent = function(evt, beginFn, completeFn) {
			var args = {};
			if (evt.responseXML) {
				var exts = evt.responseXML.getElementsByTagName('extension');
				for (var i = 0; i < exts.length; i++) {
					var ext = exts[i];
					if (ext.getAttribute('ln') == 'primefaces' && ext.getAttribute('type') == 'args') {
						args = $.parseJSON(ext.textContent || ext.innerText || ext.text);
					}
				}
			}
			var status = evt.status; // Can be "begin", "complete" or "success".
			switch (status) {
				case 'begin': // Before the ajax request is sent.
					beginFn();
					break;
				case 'complete': // After the ajax response is arrived.
					break;
				case 'success': // After update of HTML DOM based on ajax response.
					completeFn(null, status, args);
					break;
				default:
					console.log(evt);
					break;
			}
		};
	showWaitDialog = function() {
			$('#waitdialog').fadeIn({duration: 1000, queue: false});
		};
	hideWaitDialog = function() {
			$('#waitdialog').hide();
		};	
		
	initInputFields = function() {
			[].slice.call(document.querySelectorAll('input.input__field')).forEach(function(inputElmt) {
				if (inputElmt.value.trim() !== '') {
					classie.add(inputElmt.parentNode, 'input--filled');
				}
	
				inputElmt.addEventListener('focus', focusInput);
				inputElmt.addEventListener('blur', blurInput);
			});
		};
		initInputFields();
		
	initSelectFields = function() {
			$('.form-select select, .select-group.simple-select select').each(function() {
				if (!$(this).hasClass('select-hidden')) {
					var hiddenSelect = $(this);
					hiddenSelect.addClass('select-hidden');
					hiddenSelect.wrap('<div class="select"></div>');
					hiddenSelect.after('<div class="select-styled"></div>');
	
					var styledSelect = hiddenSelect.next('div.select-styled');
					var styledSelectOptionsList = $('<ul />', {
						'class': 'select-options'
					}).insertAfter(styledSelect);
					var nbOptions = hiddenSelect.children('option').length;
					for (var i = 0; i < nbOptions; i++) {
						var currentVal = hiddenSelect.children('option').eq(i).val();
						if (hiddenSelect.hasClass('no-empty-value') && (currentVal === '' || currentVal === '0')) {
							continue;
						}
	
						$('<li />', {
							text: hiddenSelect.children('option').eq(i).text(),
							rel: currentVal
						}).appendTo(styledSelectOptionsList);
					}
					var styledSelectOptionsListItems = styledSelectOptionsList.children('li');
	
					styledSelect.text(hiddenSelect.children('option:selected').eq(0).text());
	
					styledSelect.on('click', function(evt) {
						evt.stopPropagation();
	
						$('div.select-styled.active').not(this).each(function() {
							$(this).removeClass('active').next('ul.select-options').hide();
						});
						$(this).toggleClass('active');
						styledSelectOptionsList.toggle();
					});
	
					$(document).on('click', function() {
						styledSelect.removeClass('active');
						styledSelectOptionsList.hide();
					});
	
					styledSelectOptionsListItems.on('click', function(evt) {
						evt.stopPropagation();
	
						hiddenSelect.val($(this).attr('rel'));
						styledSelect.text($(this).text()).removeClass('active');
						styledSelectOptionsList.hide();
					});
				}
			});
		};
		initSelectFields();	
		
		removeError = function () {
		$('.error-msg').remove();
		$('.global-error-message').remove();
		}
		
		nfProcessAjaxEvent = function (e, startFct, completeFn) {
		var args={};
		if (e.responseXML){
			var exts = e.responseXML.getElementsByTagName ("extension");
			for (var i = 0; i < exts.length; i++) {
				var ext = exts[i];
				if (ext.getAttribute('ln') == 'primefaces' && ext.getAttribute('type') == 'args'){
					args=jQuery.parseJSON(ext.textContent||ext.innerText||ext.text);
				}
			}
		}
		var status = e.status; // Can be "begin", "complete" or "success".
		
		switch (status) {
			case "begin": // Before the ajax request is sent.
				startFct();
				break;
			case "complete": // After the ajax response is arrived.
				break;
			case "success": // After update of HTML DOM based on ajax response..
				completeFn(null, status, args);
				break;
			default:
				console.log(e);
				break;
		}
	}	
		
	startAjaxPost = function (formId,confirmMessage){
		var responseConfirm;
		if (confirmMessage){
			responseConfirm = confirm(confirmMessage);
			console.log(responseConfirm);
		}else{
			responseConfirm = true;
		}
		
		if(responseConfirm == true) {
			removeError();
			showWaitDialog();
			return true;
		}else{
			return false;
		}
	}
	
	var successMessages = {};
	completeAjaxPost = function (xhr, status, args,formId, showValidationFailedGlobalMessage,successMessage,reload,idSlideToOnSuccess,redirectTo) {
		try{
		var successMessageVal = successMessages[successMessage];
		if(!successMessageVal){successMessageVal=successMessage;}
		var messagesId = "";
		var globalMessageId = "";
		var containerMessageId = "";
		if (formId){
			messagesId = "#" + formId.replaceAll(":", "\\:") + " .form-text-error";
			globalMessageId = "#" + formId.replaceAll(":", "\\:") + " ul.text-error";
			containerMessageId = "#" + formId.replaceAll(":", "\\:") + " .global-message";
		}else{
			messagesId = ".form-text-error";
			globalMessageId = "ul.text-error";
			containerMessageId = ".global-message";
		}
		$(messagesId).each(function(){
			$(this).parent().find('input').change(function(){
				$(this).parent().find('.form-text-error').hide( "slow", function() {
					$(this).remove();
				});
				
			})
		});
	
		if (args.validationFailed || args.error) {
			if (args.validationFailed) {
				if (!showValidationFailedGlobalMessage==false){
					$(containerMessageId).first().append(
						'<p class="text-error">'+
						'Merci de vérifier les champs signalés ci-dessous.'+
						'</p>');
				}
			}
			if ($(globalMessageId).length > 0){
				scrollUp($(globalMessageId).first());
			} else if ($(messagesId).length > 0){
				scrollUp($(messagesId).first());
			}
			hideWaitDialog();
		} else if (status=='error') {// Erreur ajax
			$(containerMessageId).first().append(
					'<p class="text-error">'+
					'Attention, une erreur est survenue : votre demande n\'a pas pu être prise en compte.'+
					'</p>');
			if ($(globalMessageId).length > 0){
				scrollUp($(globalMessageId).first());
			}
			hideWaitDialog();
		} else if (status=='success' ) {
			hideWaitDialog();
			if (successMessageVal){
				$(containerMessageId).first().append(
					'<p class="text-error">'+
					successMessageVal +
					'</p>');
			}
			if (reload) {
				var newUrl = removeURLParameter(location.href, 'logout');
				location.href = newUrl;
			}
		}else{
			hideWaitDialog();
		}
		if (status=='success' && !args.validationFailed && !args.error) {
			if(idSlideToOnSuccess){
				scrollToElement($('#' + idSlideToOnSuccess));
			}
			if (redirectTo){
				location.href = redirectTo;
			}
			return true;
		} else {
			return false;
		}
		}catch(e){
			console.log(e);
			hideWaitDialog();
		}
	}
});	

function focusOnErrorInputs() {
	var inputs = document.getElementsByClassName('input');
	var cpt = 0;
    for(var i = 0; i < inputs.length; i++) {	
    	var inputModif;
    	for (var j = 0; j < inputs[i].children.length; j++) {
    		if(inputs[i].children[j].tagName === 'INPUT') {
    			if(inputs[i].children[j].classList.contains('incomplete')) {
    				if(cpt === 0) {
    					inputs[i].children[j].focus();
    				}
    				inputs[i].classList.add('input--active');
    				cpt++;
    			}
    			break;
    		}
    	}
    }
}

function highlightEmptyObligatoire(id) {
	// c'est vide on ajoute les classes erreurs
	if(document.getElementById(id).value==null || document.getElementById(id).value=="") {
		//ajout class
		document.getElementById(id).classList.add("input");
		document.getElementById(id).classList.add("incomplete");
	} else {
		// supprimer class
		document.getElementById(id).classList.remove("input");
		document.getElementById(id).classList.remove("incomplete");
	}
}