/*
 * Wird ueber JSF ein AJAX-Aufruf ausgefuehrt, so muss die aufrufende Methode fuer JSF bekannt sein. 
 * Dies wird durch die Initialisierung der JavaScript-Datei vor dem Aufruf der JSF-Methode erreicht.
 * ==> Diese Datei (bmf-steuerrechner-menu.js) wird vor dem Menu aufgerufen. Werden an einer anderen 
 * Stelle ebenfalls JSF-AJAX Aufrufe getaetigt, so muessen die zu verwendeten Methode hier definiert 
 * werden!
 * @see 'menu.xhtml'
 */

/**
 * Setzen des Fokus nach dem erfolgreichen Ausfuehren des Menues.
 * 
 * @param data
 * @param id
 */
function setMenuFocus(data, id) {
	var status = data.status;

	switch (status) {
	case "begin":
		// This is invoked right before ajax request is sent.
		break;

	case "complete":
		// This is invoked right after ajax response is returned.
		break;

	case "success":
		// This is invoked right after successful processing of ajax response
		// and update of HTML DOM.
		var element = document
				.getElementById('startseite_menusteuerung_ausfuehrung:' + id);
		// .getElementById('#startseite_menusteuerung_ausfuehrung\\:sma_haupt_lohnsteuer');
		element.focus();
		element.select();
		break;
	}
}

/**
 * Setzt den Fokus. Start ist der LI-Tag mit der uebergebenen ID.
 * 
 * @param data
 * @param id
 */
function setMenuFocusLink(data, id) {
	if (data.status == "success") {
		var element = document.getElementById(id);
		var child = element.getElementsByTagName("a")[0];
		child.focus();
		child.select();
	}
}

/**
 * Setzt den Fokus bei den Jahren von Faktorverfahren bzw. von Lohnsteuer, auf
 * das erste Jahr, welches in der Liste angzeigt wird.
 * 
 * @param data
 * @param id
 */
function setMenuFocusFuerJahr(data, id) {
	if (data.status == "success") {
		var element = document.getElementsByClassName("sitemap_ls_jahr_li")[0];
		var child = element.getElementsByTagName("a")[0];
		child.focus();
		child.select();
	}
}

/**
 * Setzt nach der Zustimmung des Hinweises den Fokus auf dieses Element.
 * 
 * @param data
 */
function setExternInterfaceFocus(data) {
	if (data.status == "success") {
		focusNewElement("#uiExternSchnittstelleForm\\:bmf_link_first_extern_interface");
	}
}

/**
 * Setzt den Focus auf das Element mit der uebergebenen ID
 * 
 * @param data
 * @param id
 */
function setNewFocusForId(data, id) {
	if (data.status == "success") {
		focusNewElement("#" + id.replace(":", "\\:"));
	}
}

/**
 * Sezt den Fokus auf die Fehlerbox, falls diese existiert, oder auf den
 * "Berechnen A" Button.
 * 
 * @param data
 * @param id
 * @returns
 */
function setNewFocusForCalcEM(data, id) {
	if (data.status == "success") {
		var input = $("#" + id.replace(":", "\\:"));
		if (input != undefined && input != null && input.length) {
			// Fehlermeldung selektieren
			input.focus();
			input.select();
			data.preventDefault();
			data.stopPropagation();
		} else {
			// Fehlermeldung nicht vorhanden also selektiere Button wieder
			focusNewElement("#fb_form\\:income_fb_em");
		}
	}
}

/**
 * Sezt den Fokus auf die Fehlerbox, falls diese existiert, oder auf den
 * "Berechnen B" Button.
 * 
 * @param data
 * @param id
 * @returns
 */
function setNewFocusForCalcEF(data, id) {
	if (data.status == "success") {
		var input = $("#" + id.replace(":", "\\:"));
		if (input != undefined && input != null && input.length) {
			// Fehlermeldung selektieren
			input.focus();
			input.select();
			data.preventDefault();
			data.stopPropagation();
		} else {
			// Fehlermeldung nicht vorhanden also selektiere Button wieder
			focusNewElement("#fb_form\\:income_fb_ef");
		}
	}
}

/**
 * Setzt den Fokus fuer die Steuerklasse
 * 
 * @param data
 * @param id
 */
function setVersorgungsFokus(data, id) {
	if (data.status == "success") {
		// Steuerklasse
		var inputSelect = $("#" + id.replace(":", "\\:"));
		var haveNotClass = !inputSelect.hasClass('inputInvalid');
		var inputValue = inputSelect.val();
		if (haveNotClass && inputValue > 0) {
			focusNewElement("#bl_form\\:in_monateVerbezug");
		} else {
			focusNewElement("#dialog_id_bl_vorsorge");
			// data.preventDefault();
			// data.stopPropagation();
		}
	}
}

/**
 * Fokusiert das Element
 * 
 * @param id
 */
function focusNewElement(id) {
	var input = $(id);
	if (input != undefined && input != null && input.length) {
		input.focus();
		input.select();
	}
}