/**
 * File contenente tutti i metodi util utilizzati nella portlet di ricerca AIFA 
 * @author Edgar Chirinos
 */

/**
 * Funzione che estrae tutti i checkbox selezzionati da un tipo
 * @param nameInput
 * @returns arrayValues
 */
function getValuesInputCheckbox(nameInput){
	var arrayValues=[];
	$.each($("input[name="+nameInput+"]:checked"), function(index,item) {
			arrayValues.push(item.value);
	});
	return arrayValues;
}
/**Funzione che realizza la chiamata verso la ricerca partendo dalla toggle bar
 * 
 * @param portletNamespace
 * @param urlPageSearch Utile per generare una ricerca verso la portlet nuova oppure la portlet vecchia
 * @param keywordsParamName Utile per generare una ricerca verso la portlet nuova oppure la portlet vecchia
 * @returns
 */
function callSearch(portletNamespace,urlPageSearch,keywordsParamName){	
	var searchKeywords=$('#'+portletNamespace+'searchKeywords').val();
	window.location.href = urlPageSearch+"?"+keywordsParamName+"="+searchKeywords;
}

/**
 * Funzione il clean di un input
 * @param idInput
 * @returns
 */
function resetInput(idInput){
	searchKeywords=$('#'+idInput).val("");
}

/**
 * Metodo che genera messaggi di alerta
 * @param text
 * @returns
 */
function buildAlertMessagge(text) {
	return '<div class="alert alert-danger alert-dismissible" role="alert">'
			+ '<button aria-label="Close" class="close" data-dismiss="alert" type="button">X<span class="sr-only">Close</span></button>'
			+ '<strong class="icon-exclamation-sign lead">&nbsp;Attenzione:</strong>&nbsp;'
			+ text + '</div>';
}

/**
 * Metodo che renderizza lo spinner del caricamento
 * @param idSpinnerLoading
 * @returns
 */
function activeLoading(idSpinnerLoading){
	$("#"+idSpinnerLoading).removeClass("d-none");
}

//Funzione che realizza la chiamata ajax generica riceve la portletUrl ed il json parameters
function generateAjaxCall(urlMVCCommand, jsonParameters) {
	return $.ajax({
		async : false,
		dataType : "json",
	/*	cache: false ,
		headers: { "cache-control" : "no-cache" },
		enctype: 'mutipart/form-data',*/
		method: "POST",
		url : urlMVCCommand,
		data : jsonParameters
	});
}

/**
 * Utile per fare un decode del codice html come per i caratteri speciali come "
 * @param encodeValue
 * @returns decodeValue
 */
function decodeHtml(encodeValue){
	return $('<div></div>').html(encodeValue).text();
}

/**
 * Function che fa il parsing delle date con formatto
 * @param alloyDateFormat '%d/%m/%Y'
 * @param stringDate 20/02/2021
 * @returns
 */
function parseDate(alloyDateFormat,stringDate){
	var parserDate= AUI().use('aui-datatype-date-parse').Date;
	return (stringDate)?parserDate.parse('%d/%m/%Y',stringDate):null;
}

/**
 *  Utile per verificare che la data 'DA' non sia maggiore alla data 'A'
 *  @param idDataFrom id input data inizio
 *  @param idDataTo id input data fine
 * @returns boolean
 */
function validateDate(idDateFrom,idDateTo){
	$dateFromString=$('#'+idDateFrom).val();
	$dateToString=$('#'+idDateTo).val();
	var dateFrom = parseDate('%d/%m/%Y',$dateFromString);
	var dateTo = parseDate('%d/%m/%Y',$dateToString);
	return (!dateTo || (dateFrom<=dateTo));
}

/**
 * Abilita o disabilità i filtri anni se Data 'Da' oppure data 'A'
 * @param inputNameYears selettore js per porter prendere i valori dei campi anni
 * @param idDataFrom id input data inizio
 * @param idDataTo id input data fine
 * @returns boolean
 */
function enableDisableYearsFilter(inputNameYears,idDateFrom,idDateTo) {
	var dateParser=AUI().use('aui-datatype-date-parse').Date;
		$dateFromString=$('#'+idDateFrom).val();
		$dateToString=$('#'+idDateTo).val();
	var dateFrom = parseDate('%d/%m/%Y',$dateFromString);
	var dateTo = parseDate('%d/%m/%Y',$dateToString);
	
	if (dateFrom || dateTo) {
		$("input[name="+inputNameYears+"]").prop("checked", false);
	}
}

/**
 * Abilita o disabilità il filtro range di date se filtro anni è selezionato
 * @param inputNameYears selettore js per porter prendere i valori dei campi anni
 * @param idDataFrom id input data inizio
 * @param idDataTo id input data fine
 * @returns boolean
 */
function enableDisableRangeDateFilter(inputNameYears,idDateFrom,idDateTo) {
	var selectedYears = getValuesInputCheckbox(inputNameYears);
	if (selectedYears.length > 0) {
		$('#'+idDateFrom).prop('disabled', true);
		$('#'+idDateTo).prop('disabled', true);
	} else {
		$('#'+idDateFrom).prop('disabled', false);
		$('#'+idDateTo).prop('disabled', false);
	}
}


