// custom scripts
// Zusatzfunktionen zur schnelleren Datumseingabe


/**
 * 
 */
$(document).ready(function() {
	initFaelligkeit();

});

/*
* Hier setzen wir einen Event handler und berechnen  anhand der Eingabe im Feld alexander-logistic-date-days
* ein neues Datum auf basis des Rechnungsdatum (date_invoice)
*/
function initFaelligkeit(ajax_event) {
	$(".alexander-logistic-date-days").change(function(e) {
		var days = $(this).val();
		if (days=='') {
			return true;
		}
		
		// find the basis date 'date_invoice'
		var basisDateString=$("input[id$='date_invoice']").val();
		const parts = basisDateString.split(".");
		var basisDay=parts[0];
		var basisMonth=parts[1];
		var basisYear=parts[2];


		var basisDate = new Date();
		basisDate.setFullYear(basisYear);
		basisDate.setMonth(basisMonth-1);
		basisDate.setDate(basisDay);
		
		
		// get days,month,year from 
		var newDate = new Date(basisDate.getTime() + (days * 24 * 60 * 60 * 1000));

		var day = '' + newDate.getDate();
		if (day.length == 1) {
			day = '0' + day;
		}
		var month = '' + (newDate.getMonth() + 1);
		if (month.length == 1) {
			month = '0' + month;
		}
		var year = '' + newDate.getFullYear();
		year = year.substring(2);

		// ddmmyy
		var dateFormated = day + month + year;
		//alert(dateFormated);

		var dateInput=$(this).next();
		dateInput.val(dateFormated);
		validateBuchungsDatum(dateInput);

		// clear input
		$(this).val('');
		
	});
}

// erweitere datums eingabe
// TTMM
// TTMMYY
// TT-MM-YY
// TT.MM.YY
// jahreszahl falls zweistellig
function validateBuchungsDatum(item) {

	//var mhd = $("[id$=mhdinput_id]");
	var mhd = $(item);
	var text = $(mhd).val();

	while (text.indexOf('-') > -1) {
		text = text.replace("-", ".");
	}
	var d = new Date();


	// check for TTMMYY
	if (text.length == 6 && text.indexOf('.') == -1) {
		text = text.substring(0, 2) + "." + text.substring(2, 4)
			+ ".20" + text.substring(4);
	}
	// check TTMMYYYY
	if (text.length == 8 && text.indexOf('.') == -1) {
		text = text.substring(0, 2) + "." + text.substring(2, 4)
			+ "." + text.substring(4);
	}
 
	// check for TTMM
	if (text.length == 4 && text.indexOf('.') == -1) {
		text = text.substring(0, 2) + "." + text.substring(2);
		text = text + "." + d.getFullYear();
	}

	// check for missing full year
	var n = text.lastIndexOf(".");
	if (n > 0 && n > text.length - 4) {
		// we insert 20
		var left = text.substring(0, n + 1);
		var right = text.substring(n + 1);
		text = left + "20" + right;
	}
	
	
	// validate if year has more then 4 digits
	//  TT.MM.YYYY is allowed
	if (text.length!=10) {
		console.log("Invalid Date=" + text);
		text="";
	}

	// update field....
	$(mhd).val(text);
	
	
	// hier aktualisiereh wir die Fälligkeit wenn das Rechnungsdatum sich ändert
	// und wir ein Zahlungsziel kennen.
	var inputElementZahlungszielCdtr=$("input[id$='cdtr_creditperiod']");
	var itemID=item.id;
	if (itemID && itemID.endsWith('date_invoice')) {
		// update zahlungsziel
		if (inputElementZahlungszielCdtr && inputElementZahlungszielCdtr.val()!='') {
			var inputElementZahlungsziel=$("input[data-item='cdtr.creditperiod']");
			if (inputElementZahlungsziel) {
				inputElementZahlungsziel.val(inputElementZahlungszielCdtr.val());
				inputElementZahlungsziel.change();
				$('.alexander-logistic-date').focus().select();
			}
		}
	}
}
