// erstellung_form_kfz.js
//
// Nur Funktionen die das 3. Tab betreffen
//============================================================================

/***
	function f_load_kfz							Erstmaliges Laden der Daten 
	function f_load_hersteller()				Laden der Hersteller Liste
	function f_load_klasse()					laden der Klassen Liste
	function f_load_quelle()					Laden der Quellen Liste
	function f_load_modelle(her_id)				Laden der Modelle

	function f_show_kfz()						Anzeige der Parameter
	function f_show_kfz_data()					Anzeige der rstlichen Kfz-Daten
	function f_show_modell_edit()				Umwechseln auf MOdell Edit 
	function f_show_modell_liste()				Umwechseln auf Modell Liste


	function f_process_modelle(response)		Modelle Liste in DDLB laden
	function f_process_hersteller(response)		Hersteller Liste in DDLB laden
	function f_process_klasse(response)			Klassen Liste in DDLB laded
	function f_process_quelle(response)			Quelle Liset in DDLB laden
	function f_process_suche_fin(response)		Anwort der DB verarbeiten
	function f_process_suche_fin_importeure(response)	Antwort der DB verarbeiten
	function f_process_decode_fin_wmi(response)	Antwort der DB verarbeiten

	function f_change_erst_check(node)			Onchange von checkbox Erstzulasdung
	function f_change_fingrund_edit(node)		onchange Fingrund edit
	function f_change_fin_edit(node)			onchange Fin edit
	function f_change_modell_liste()			onchange der Modell Liste
	function f_change_modell_edit(node)			onchange des Modell Edit
	function f_change_klassen_liste()			onchange der Klassen LIste
	function f_change_hersteller_liste()		onchange der hersteller Liste
	function f_change_erstzulassung(node)		onchange Erstzulassung edit
	function f_change_eigengewicht(node)		onchange Eigengewicht Edit

	function f_get_auswahl_fin()			Wurde FIN oder FINGRUND ausgewählt
*/	

/***
* Radiogroup wurde verändert, 1. Stelle auslesen und anzeigen
*
*/
var maintainerKfz = new AjaxMaintainer("waiting");

function f_load_kfz()
{
	// Rules zum überprüfen
	add_rule("fin_edit",			REQUIRED_RULE, la_msg[24]);
	add_rule("fin_edit",			MINLENGTH_RULE, la_msg[43],17);
	add_rule("fin_edit",			MAXLENGTH_RULE, la_msg[43],17);
	add_rule("fin_edit",			REGEX_RULE, la_msg[44],/^[A-HJ-NPR-Z0-9]+$/);
	add_rule("fin_edit",			REGEX_RULE, la_msg[53],/[0-9]{5}$/);
	
	add_rule("fingrund_edit",		REQUIRED_RULE, la_msg[52]);

	add_rule("erstzulassung_edit",	REQUIRED_RULE, la_msg[25]);	
	add_rule("erstzulassung_edit",	DATUM_104_RULE,la_msg[54]);

	add_rule("eigengewicht_edit",	REQUIRED_RULE, la_msg[26]);
	add_rule("eigengewicht_edit",	NUMERIC_RULE, la_msg[55]);
	add_rule("eigengewicht_edit",	NUMERIC_MIN_RULE, la_msg[56],500);
	add_rule("eigengewicht_edit",	NUMERIC_MAX_RULE, la_msg[56],3500);

	add_rule("modell_id",			ALTERNATIVE_RULE, la_msg[57],"modell_edit_id");
	add_rule("modell_edit",		REGEX_RULE, la_msg[58],/^[a-zA-Z0-9_\.\/\s]+$/);

	// Hersteller laden
	// -----------------
	f_load_hersteller();
	
	// Klasse laden
	// ------------
	f_load_klasse();

	// Quelle laden
	// --------------
	f_load_quelle();

}
function f_update_kfz()
{
}
function f_show_kfz()
{
	var tbody_node = document.getElementById("thead_kfz");
	// -----------------------------------------------
	// FIN Auswahl adden
	// -----------------------------------------------	
	var ar_entry = new Array();
	ar_entry[0] = new Object();
	ar_entry[0].value = 1;
	ar_entry[0].text  = la_msg[28];
	ar_entry[1] = new Object();
	ar_entry[1].value = 2;
	ar_entry[1].text  = la_msg[29];
	
    f_insert_row_edit(tbody_node,"* "+la_msg[31],"fin_edit","f_change_fin_edit(this)", "tr_fin");
    f_insert_row_edit(tbody_node,la_msg[29]+" "+la_msg[32],"fingrund_edit","f_change_fingrund_edit(this)", "tr_fingrund");
    document.getElementById("fin_edit").onkeydown = f_key_fin;
    document.getElementById("fingrund_edit").onkeydown = f_key_fin;
    
    aa_input_tags["head_kfz"] = Array("erstzulassung_edit", "eigengewicht_edit", "modell_id", "fin_edit");
    
    f_show_kfz_data();	
}
	
/***
* Eingabefelder für die Erfassung der Fahrzeugdaten
*
*/
function f_show_kfz_data()
{
	var tbody_node = document.getElementById("tfoot_kfz");
	
	var ll_anz_rows = tbody_node.rows.length;

	// Hersteller
	var tr_her_ddlb = f_insert_row_ddlb(tbody_node,"* "+la_msg[34],"hersteller");
	tr_her_ddlb.id = "her_ddlb";
	f_load_ddlb("hersteller_liste","NAME_HERSTELLER");

	// Hersteller ID speichern
	document.getElementById("her_id").value = document.getElementById("hersteller_liste").value;
	//Einen unsichtbaren, nicht-editierbaren Node hinzufügen, falls die FIN in der DB gefunden wird
 	var tr_her = f_insert_row_text(tbody_node, la_msg[34], document.getElementById("hersteller_liste").value);    
    tr_her.id = "her_readonly";
    hideElement("her_readonly", true);

	// Modell
	var tr_mod_ddlb = f_insert_row_ddlb_edit(tbody_node,"* "+la_msg[33],"modell",la_msg[46]);
	tr_mod_ddlb.id = "modell_ddlb";
	//Einen unsichtbaren, nicht-editierbaren Node hinzufügen, falls die FIN in der DB gefunden wird
 	var tr_mod = f_insert_row_text(tbody_node, la_msg[33], document.getElementById("modell_liste").value);    
    tr_mod.id = "modell_readonly";
    hideElement("modell_readonly", true);	
	
	f_change_hersteller_liste();
	
	// Erstzulassung
   	var tr_node = document.createElement( "tr" );
   	tbody_node.appendChild(tr_node);
      
   	var td_node1 = insert_td(tr_node,"* "+la_msg[35]+la_msg[63]+':',"tdh");
		dom_insert_attribute(td_node1, "nowrap", "nowrap");
	td_node1.style.width = li_text_width;

    var li_width = parseFloat(li_input_width)+parseFloat(5);
	var ls_td = "<span style='width:" + li_width + "'>";
	ls_td +="<input type='text' id='erstzulassung_edit' style='width:"+li_input_width+"' value='' onchange=\"this.style.color='red';f_change_erstzulassung(this)\"><br>";		
	ls_td +="<input type='checkbox' id='erstzulassung_checkbox' onclick='f_change_erst_check(this)'>"+la_msg[36];		
	ls_td +="</span>";
   	var td_node2 = insert_td(tr_node,ls_td,"tdd");       
		dom_insert_attribute(td_node2, "nowrap", "nowrap");

	// Type
	f_insert_row_edit(tbody_node,la_msg[37],"type_edit");

	// Fahrzeugklasse
	f_insert_row_ddlb(tbody_node,la_msg[38],"klassen");
	f_load_ddlb("klassen_liste","NAME_KLASSEN");

	// Farbe		
	f_insert_row_edit(tbody_node,la_msg[39],"farbe_edit");

	// Eigengewicht
	f_insert_row_edit(tbody_node,"* "+la_msg[40],"eigengewicht_edit","f_change_eigengewicht(this)");

	// Datenquelle
	f_insert_row_ddlb(tbody_node,la_msg[41],"quellen");
	f_load_ddlb("quellen_liste","NAME_QUELLEN");
	
	// Info
	f_insert_row_edit(tbody_node,la_msg[67],"info_edit");
}

function f_update_kfz_data()
{		
	window.focus();
	
	//Falls bei Abschluss aufgerufen kommt es im IE zu einem Fehler
	if(ls_last_lasche == "head_kfz")
	{
	  //Fokus auf entsprechendes Feld setzen
	  document.getElementById("hersteller_liste").focus();
	}
}

function f_load_hersteller()
{
	sendRequest(maintainer, '../erfassung/erfassung_data.php', "?work=get_hersteller_liste", f_process_hersteller, 0, null);			
}
function f_load_klasse()
{
	sendRequest(maintainer, '../erfassung/erfassung_data.php', "?work=get_klasse_liste", f_process_klasse, 0, null);			
}
function f_load_quelle()
{
	sendRequest(maintainer, '../erfassung/erfassung_data.php', "?work=get_quelle_liste", f_process_quelle, 0, null);			
}

function f_load_modelle(her_id)
{
	// Check ob sie schon mal verwendet wurde
	var la_send = new Object();	
	la_send["her_id"] = her_id;	
	var ls_post = '?work=get_modelle_from_hersteller&vars=' + URLencode(la_send.toJSONString());	

	sendRequest(maintainerKfz, '../erfassung/erfassung_data.php', ls_post, f_process_modelle, 0, null);			
}

function f_process_modelle(response)
{
	eval("var ret = " + response);
	// Falls fehler, dann ausgabe und ende
	if (ret["result_code"] == false) {alert(ret["result_msg"]);	return;}
	// Speichern einer Liste mit Namen der Länder
	if (ret["rows"].length > 0)
	{
		f_set_value("NAME_MODELLE",ret["rows"]);
		f_load_ddlb("modell_liste","NAME_MODELLE");
		var ll_modell_id = document.getElementById("modell_id").value;
		f_select_ddlb("modell_liste",ll_modell_id);			
		
		f_show_modell_liste();
		f_change_modell_liste();
		if(document.getElementById("modell_ddlb").style.display == "none")
		{
		  var td_node = document.getElementById("modell_readonly").getElementsByTagName("td")[1];
		  var obj_sel = document.getElementById("modell_liste");
		  td_node.innerHTML = obj_sel.options[obj_sel.selectedIndex].text;
		}		  
	}
	//Hersteller hat keine Typen eingetragen
	else
	{
		f_set_value("NAME_MODELLE",ret["rows"]);
		f_load_ddlb("modell_liste","NAME_MODELLE");	 
		f_show_modell_edit(); 
	}
}

function f_process_hersteller(response)
{
	eval("var ret = " + response);
	// Falls fehler, dann ausgabe und ende
	if (ret["result_code"] == false) {alert(ret["result_msg"]);	return;}
	// Speichern einer Liste mit Namen der Länder
	if (ret["rows"].length > 0)
		f_set_value("NAME_HERSTELLER",ret["rows"]);
}

function f_process_klasse(response)
{
	eval("var ret = " + response);
	// Falls fehler, dann ausgabe und ende
	if (ret["result_code"] == false) {alert(ret["result_msg"]);	return;}
	// Speichern einer Liste mit Namen der Länder
	if (ret["rows"].length > 0)
		f_set_value("NAME_KLASSEN",ret["rows"]);
}

function f_process_quelle(response)
{
	eval("var ret = " + response);
	// Falls fehler, dann ausgabe und ende
	if (ret["result_code"] == false) {alert(ret["result_msg"]);	return;}
	// Speichern einer Liste mit Namen der Länder
	if (ret["rows"].length > 0)
		f_set_value("NAME_QUELLEN",ret["rows"]);
}

function f_change_erst_check(node)
{
	// unbekannt wurde gedrückt
	// nur ändern wenn Checkbox angehackerlt ist
	if(document.getElementById("erstzulassung_checkbox").checked == true)
  	    document.getElementById("erstzulassung_edit").value = "01.01.1900";
}

function f_change_fingrund_edit(node)
{		
	// Prüfe folgende Felder beim Abschluss
	var liste = aa_input_tags["head_kfz"];
	var ll_len = liste.length;
	// Alle löschen und neu aufbauen
	for(var i=0;i<ll_len;i++) liste.shift();	

    //Je nach FIN oder fehlender, die Überprüfung setzen
    if(f_get_auswahl_fin() == -1)
      liste.push("fin_edit");
    else
    {
      liste.push("fingrund_edit");
	  tbody_node = document.getElementById("tbody_kfz");
	  var ll_len = tbody_node.rows.length-1;

    }
    
	// Die restlichen rules adden
	liste.push("erstzulassung_edit");
	liste.push("eigengewicht_edit");
	liste.push("modell_id");

    aa_input_tags["head_kfz"] = liste;
	// Eingabfelder updaten		
	f_update_kfz_data();
}

function f_change_fin_edit(node)
{
    tbody_node = document.getElementById("tbody_kfz");
    var ll_len = tbody_node.rows.length-1;
    
	// Prüfe folgende Felder beim Abschluss
	var liste = aa_input_tags["head_kfz"];
	var ll_len = liste.length;
	// Alle löschen und neu aufbauen
	for(var i=0;i<ll_len;i++) liste.shift();
	
	liste.push("erstzulassung_edit");
	liste.push("eigengewicht_edit");
	liste.push("modell_id");	

	// korr die FIN
	var ls_fin = node.value;
	ls_fin = ls_fin.replace(/ /g,'');
	ls_fin = ls_fin.toUpperCase();
	node.value = ls_fin;	
	
	//Wenn ein Grund eingegeben wurde und die FIN leer ist,
	//wird die FIN nicht überprüft
    if(f_get_auswahl_fin() == -2)
    {
        liste.push("fingrund_edit");	
        aa_input_tags["head_kfz"] = liste;
    }    
    else
    {
        liste.push("fin_edit");
	    aa_input_tags["head_kfz"] = liste;
		// validate FIN	
		if (check_rules(Array("fin_edit")) != true)
			return;
	
		f_set_value("FIN",ls_fin);
		node.value = la_msg[42];
	
		// Check ob sie schon mal verwendet wurde
		var la_send = new Object();	
		la_send["kfz_fin"] = ls_fin;	
		var ls_post = '?work=suche_fin&vars=' + URLencode(la_send.toJSONString());	
		sendRequest(maintainerKfz, '../erfassung/erfassung_data.php', ls_post, f_process_suche_fin, 0, null);			
		
		// Weiter gehts in f_process_suche_fin
		// ------------------------------------	
	}
}
function f_process_suche_fin(response)
{
	eval("var ret = " + response);
	if (ret["result_code"] == false) {alert(ret["result_msg"]);	return;}

	var row = ret["rows"][0];		
	if (row["gefunden"] > 0)
	{
		// Wurde bereits verwendet
		document.getElementById("fin_edit").value = "";//f_get_value("FIN");
		alert(la_msg[45]);

		return;
	}
	var ls_fin = row["kfz_fin"];

	// FIN decoden
	// -----------	
	var la_send = new Object();	
	la_send["kfz_fin"] = f_get_value("FIN");
	
	var ls_post = '?work=decode_fin_wmi&vars=' + URLencode(la_send.toJSONString());	
	sendRequest(maintainerKfz, '../erfassung/erfassung_data.php', ls_post, f_process_decode_fin_wmi, 0, null);
}

function f_process_decode_fin_wmi( response )
{
  eval("var ret = " + response);
  if(!ret["result_code"])
  {
    alert(ret["result_msg"]);
    return;
  }

  document.getElementById("fin_edit").value = f_get_value("FIN");
  var data = ret["rows"];
  
  if(data != null)
  {
	 if(typeof data["her_id"] != "undefined")
	 {
	    // hersteller ID speichern
		if(f_select_ddlb("hersteller_liste",data["her_id"]))
		{
		  document.getElementById("her_id").value = data["her_id"];
		  f_load_modelle(data["her_id"]);
		}  
		else
		{
		  //Nicht in der DDLB Hersteller vorhanden und kann somit nicht erfasst werden
		  document.getElementById("fin_edit").value = "";
		  alert(la_msg[88]);
		}
	 }  
  }
}

function f_change_modell_liste()
{
	// Namen aus Liste in Edit schreiben
	document.getElementById("modell_edit").value = document.getElementById("modell_liste").text;

	document.getElementById("modell_id").value  = document.getElementById("modell_liste").value;
	
	document.getElementById("modell_edit_id").value  = "";
}

function f_change_modell_edit(node)
{
	// korr das Modell
	var ls_modell = f_trim(node.value);
	node.value = ls_modell;	

	// Eingabe überprüfen
	var ret = check_rules(Array(node.id));
	if (ret != true)
		return;
	
	// Checken ob nicht die Eingabe schon in der DDLB drinnen ist?
	// -----------------------------------------------------------
	var rows = f_get_value("NAME_MODELLE");

	for (var i = 0;i<rows.length;i++)
	{
		if (rows[i].name.toUpperCase() == ls_modell.toUpperCase())
		{
			// Auswahl selekten und anzeigen
			f_select_ddlb("modell_liste",rows[i].id);
			document.getElementById("modell_id").value  = node.value;
			document.getElementById("modell_edit_id").value = "";
			f_show_modell_liste();
			return;
		}
	}	
	// Speichern
	document.getElementById("modell_edit_id").value = ls_modell;
}

function f_change_klassen_liste()
{
}

function f_change_quellen_liste()
{
}

function f_change_hersteller_liste()
{
	var ll_her_id = document.getElementById("hersteller_liste").value;

	// Hersteller ID speichern
	document.getElementById("her_id").value = ll_her_id;

    //Unbekannte Hersteller -> es werden keine Modelle angezeigt
    if(ll_her_id != -1)
    {
	  f_load_modelle(ll_her_id);
	}  
//	document.getElementById("modell_liste").focus();
}

function f_show_modell_edit()
{
	document.getElementById("modell_edit_id").value = ""; //Eingabefeld initialisieren
	document.getElementById("modell_edit").value = "";
	showElement("div_modell_einzeln",true);

	document.getElementById("modell_id").value = "";
	document.getElementById("modell_liste").selectedIndex = 0;
	hideElement("div_modell_liste",true);
}

function f_show_modell_liste()
{
    document.getElementById("modell_edit_id").value = "";
    document.getElementById("modell_edit").value = "";
	hideElement("div_modell_einzeln",true);
	showElement("div_modell_liste",true);
	
//	document.getElementById("modell_liste").focus();
}

function f_change_erstzulassung(node)
{
	var ls_value = node.value;
	
	// Übernahmedatum formatieren, falls ohne '.', wenn 8 zeichen
	if (node.value.length == 8)
		node.value = ls_value.substr(0,2) + '.' + ls_value.substr(2,2) + '.' + ls_value.substr(4,4);

	// Eingabe überprüfen
	var ret = check_rules(Array(node.id));
}
function f_change_eigengewicht(node)
{
	// Eingabe überprüfen
	var ret = check_rules(Array(node.id));
    
    if(ret == true)
    {
      //Falls nicht ganzzahlig und nicht ,0 wird eine Meldung ausgegeben
      if(!f_is_integer(node))
        alert(la_msg[70]);
    }    
    else
    {
      //Firefox setzt den Fokus nicht wie gewünscht, deswegen  
      window.setTimeout("document.getElementById('"+node.id+"').focus()", 3);
    }
}

/***
* function f_get_auswahl
*
* Liefert ob Fin oder FINgrundt
*
* @return int -1,-2
*/
function f_get_auswahl_fin()
{
	if(document.getElementById("fin_edit").value.length > 0 || 
	   (document.getElementById("fin_edit").value.length <= 0 && document.getElementById("fingrund_edit").value.length <= 0))
	  return -1;
	else
	  return -2;
}

function f_key_fin(e)
{
    
    //IE Übergibt kein Event
    //Im IE bewirkt ENTER kein onChange, somit wird dieses extra abgefragt
	if (!e)
	{
      e = window.event;

  	  //Falls ENTER gedrückt wurde, onchange ausführen
  	  if (e.keyCode == 10 || e.keyCode == 13 )
  	  {
   	    window.focus(); //durch Wechsel des Fokus, wird onchange ausgeführt
	  }	
	}
}
