//============================================================================
// erfassung_form.js
// Anzeige von Tabs, die Verabreitung der einzelenen Tabs findet in eigenen
// JS statt.
//============================================================================


/***
	f_load							Alle tabs laden
	f_load_stelle					Daten der Stelle laden
	

	Utility Functions:
	------------------
	f_insert_array					Ein Array von Daten für History speichern
	f_insert_value					Ein Key mit value adden
	f_set_value						Ein Key mit Value setzen
	f_get_value						Ein Value eines Kexs holen
	f_make_object					Ein OBject zum Speichern anlegen
	
	f_insert_row_text				einfügen einer Zeile mit Text
	f_insert_row_edit				einfügen einer Zeile mit Editfeld
	f_insert_row_ddlb				einfügen einer Zeile mit DDLB
	f_insert_row_ddlb_text		einfügen einer Zeile mit DDLB 
	f_insert_row_radio			einfügen einer Radiobgroup
	f_select_ddlb					Selektieren eines Wertes inm DDLB
	f_get_text_ddlb				Liefert den text des selektierten Eintrages
	f_get_text_value(as_node_id)
	f_load_ddlb
*/	

	// Eingabe Felder die gespeichert werden sollen
	// --------------------------------------------
	var aa_input_tags = Object();
	aa_input_tags["head_stelle"] = new Array(); // Wird dynmisch added
	aa_input_tags["head_kfz"] = new Array();	// Wird dynmisch added
	
	var ls_last_lasche = "head_stelle";
	var aa_einstellungen = new Array();
	
	var windowDetail = null;
	var windowSuche = null;
	var windowPdf = null;

   var maintainer = new AjaxMaintainer("waiting",f_load_ready);

/***
* f_load()
* 
* Im body_onload werden alle Daten retrieved.
*/
function f_load()
{
	// 1. Lasche bolden
	f_switch_tab("head_stelle",true);
	
	// Alle disablen
	f_switch_tab("head_abhol",false);
	f_switch_tab("head_kfz",false);
	f_switch_tab("head_abschluss",false);

	// Stellen laden
	f_load_stelle();

	// Abholadresse laden
	f_load_abhol();

	// Kfz laden	
	f_load_kfz();

	// Teile laden	
	f_load_teile();
}

function f_load_ready()
{
	// Wenn alles geladen, dann anzeigen
	f_show_stelle();
	f_show_abhol();
	f_show_teile();
	f_show_kfz();

	// Button disablen
	showElement("cb_abschluss",true);
}

function f_get_auswahl()
{
    return -1;
}

function f_insert_array(as_key,value)
{
//	alert("insert_array("+as_key+","+value+")");
	var alt = f_get_value(as_key);
	if (alt == false)
	{
		// nicht gefunden, also einfügen
		f_insert_value(as_key,value);		
		
	} else {
		
		// 1.Fall steht alleine drinnen
		if (alt == value)
			// nix zu machen
			return;

		// 2. Fall nix steht drinnen
		if (alt == '')
		{
			// Wieder speichern 
			f_set_value(as_key,value);
			return;
		}			

		// 3. Fall steht am Anfang				
		//alert("vor 1replace="+alt);
		// 1. replace ========================================
		// Löscht alle die am Anfang stehen, oder in der Mitte
		var ls_rep1 = alt.replace(new RegExp(value+"\\|","g"),"");
		//alert("nach 1replace="+ls_rep1);

		// 2. replace ==============================
		// Löscht alle die am Ende stehen
		//alert("RegEx_String2="+ls_reg2);
		var ls_rep2 = ls_rep1.replace(new RegExp("\\|"+value+"$","g"),"");		
		//alert("nach 2replace="+ls_rep2);

		// Wenn es nur mehr alleine steht, dann auch dieses löschen
		// steht alleine drinnen, dann fertig
		if (ls_rep2 == value)
			// nur value speichern
			f_set_value(as_key,ls_rep2);
		else
			// hinzufügen
			f_set_value(as_key,value + "|" + ls_rep2);
	}
}

function f_insert_value(as_key,value)
{
	// Leere Werte werden nicth eingefügt
	if (value == "")
	{
//		alert("insert_value("+as_key+","+value+") nicht möglich da value leer");
		return;
	}
	var obj = new Object();
	obj.key = as_key;	
	obj.value = value;	 

//	alert("insert_value("+as_key+","+value+")");
	aa_einstellungen.push(obj);
}

function f_set_value(as_key,value)
{
	for(var i=0;i<aa_einstellungen.length;i++)
	{
		if (aa_einstellungen[i].key == as_key)
		{
//			alert("set_value("+as_key+","+value);
			aa_einstellungen[i].value = value;
			return;
		}
	}
	// nicht gefunden, also einfügen
	f_insert_value(as_key,value);
}
function f_get_value(as_key)
{
	for(var i=0;i<aa_einstellungen.length;i++)
	{
		if (aa_einstellungen[i].key == as_key)
			return aa_einstellungen[i].value;
	}
	return false;
}

function f_make_object(as_key)
{
	var lo_set = new Object();
	lo_set.key  = as_key;
	lo_set.value=f_get_value(as_key);
	
	return lo_set;
}
/***
* function f_select_ddlb
*
* @param as_node_id	string 	ID von <select>
* @param as_value		string	Value der selectiert werden soll
*/
function f_select_ddlb(as_node_id,as_value)
{
//	alert(as_node_id+" VALUE: "+as_value);
	var liste = document.getElementById(as_node_id);

	for (var i = 0;i < liste.length;i++) 
	{
		if (liste.options[i].value == as_value)
		{
			//gefunden
//  		    alert(as_node_id + ":" +liste.options[i].text+" selected("+as_value+")");
			
			liste.options[i].selected = true;
			return true;
		}
	}
	
	return false;
}
/***
* function f_get_text_ddlb
*
* @param  as_node_id	string 	ID von <select>
* @return string	Text der Selektion
*/
function f_get_text_ddlb(as_node_id)
{
	var node = document.getElementById(as_node_id);
	if (!node)
		return "";
	return node.options[node.selectedIndex].text;
}

function f_get_text_value(as_node_id)
{
	var node = document.getElementById(as_node_id);
	if (!node)
		return "";
	var ls_value = node.value;
	ls_value = ls_value.replace(/^ /,""); // ltrim
	ls_value = ls_value.replace(/ $/,""); // rtrim
	
	return node.value;
}

/***
* function f_load_ddlb
*
* Die angegebene DDLB wird geladen
*
* @param as_name 	Name der ID vom select
* @param as_key	Name des keys in den EINSTELLUNGEN
*/
function f_load_ddlb(as_name_select,as_key)
{
	var Auswahlliste = document.getElementById(as_name_select);

	var rows = f_get_value(as_key);
		
	// Alle löschen
	var max = Auswahlliste.length;
	for (var i = 0;i<max;i++) Auswahlliste.remove(0);

	// Neu eintragen
	for (var i = 0;i<rows.length;i++)
	{
		var Eintrag = document.createElement("option");
		Eintrag.text = rows[i].name;
		Eintrag.value= rows[i].id;
		var FolgendeOption = null;
		// Browser Weiche da IE anders is!
		if (document.all)
    		FolgendeOption = Auswahlliste.length;
 		Auswahlliste.add(Eintrag, FolgendeOption);  
	}
	return Auswahlliste;
}

/***
* function insert_row_text
*
* einfügen einer Zeile mit links der BEschreibung und rechts einem Text.
* 
* @param node_id        object   table_id
* @param as_text_left   string   text der links steht
* @param as_text_right  string   text der rechts steht
*/
function f_insert_row_text(node_id,as_text_left,as_text_right)
{
   var tr_node = document.createElement( "tr" );
   node_id.appendChild(tr_node);
      
   var td_node1 = insert_td(tr_node,as_text_left+":","tdh");
		dom_insert_attribute(td_node1, "nowrap", "nowrap");
	td_node1.style.width = li_text_width;
      
   var td_node2 = insert_td(tr_node,as_text_right,"tdd");       
		dom_insert_attribute(td_node2, "nowrap", "nowrap");

   return tr_node;   	    
}
/***
* function insert_row_edit
*
* einfügen einer Zeile mit links der BEschreibung und rechts einem Editfeld.
* 
* @param node_id        object   table_id
* @param as_text_left   string   text der links steht
* @param as_edit_id     string   ID des Editfeldes
* @param as_func string Name der Function die beim onchnage aufgerufen wird
*/
function f_insert_row_edit(node_id,as_text_left,as_edit_id,as_func, as_trid)
{
   var tr_node = document.createElement( "tr" );
   
   if(as_trid != false)
     tr_node.id = as_trid;
   
   node_id.appendChild(tr_node);
      
   var td_node1 = insert_td(tr_node,as_text_left+":","tdh");
		dom_insert_attribute(td_node1, "nowrap", "nowrap");
	td_node1.style.width = li_text_width;

   var li_width = parseFloat(li_input_width)+parseFloat(5);
   // Editfeld zusammen bauen
	var ls_td = "<span style='width:" + li_width + "'>";

	if (as_func == false)
		ls_td +="<input type='text' id='"+as_edit_id+"'  style='width:"+li_input_width+"' value='' onchange=\"this.style.color='red'\">";
//	else if(as_edit_id = "fin_edit" || as_edit_id == "fingrund_edit")
//		ls_td +="<input type='text' id='"+as_edit_id+"' onkeydown='f_key(window.event)' style='width:"+li_input_width+"' value='' onchange=\"this.style.color='red';"+as_func+"\">";
	else
		ls_td +="<input type='text' id='"+as_edit_id+"'  style='width:"+li_input_width+"' value='' onchange=\"this.style.color='red';"+as_func+"\">";
		
	ls_td +="</span>";

   var td_node2 = insert_td(tr_node,ls_td,"tdd");       
		dom_insert_attribute(td_node2, "nowrap", "nowrap");
   
   return tr_node;   	    
}
/***
* function insert_row_ddlb
*
* einfügen einer Zeile mit links der Beschreibung und einer DDLB zur Auswahl
* 
* @param node_id        object   table_id
* @param as_text_left   string   text der links steht
* @param as_name		   string   prefix ID des DDLB
*/
function f_insert_row_ddlb(node_id,as_text_left,as_name)
{
   var tr_node = document.createElement( "tr" );
   node_id.appendChild(tr_node);
      
   var td_node1 = insert_td(tr_node,as_text_left+":","tdh");
		dom_insert_attribute(td_node1, "nowrap", "nowrap");
	td_node1.style.width = li_text_width;

   // DDLB zusammen bauen
   var ls_td = "<select id='"+as_name+"_liste' size='1' onchange=\"this.style.color='red';f_change_"+as_name+"_liste()\" style='width:"+li_input_width+"'>";
   ls_td +="</select>";
     
   var td_node2 = insert_td(tr_node,ls_td,"tdd");       
		dom_insert_attribute(td_node2, "nowrap", "nowrap");
   	    
   return tr_node;   	    
}
/***********************************************************************
* function insert_row_ddlb_text
*
* einfügen einer Zeile mit links der Beschreibung und rechts einer DDLB
* mit Umschalten auf das Editfeld.
*
* @param node_id        object   table_id
* @param as_text_left   string   text der links steht
* @param as_name        string   prefix für <div>,<input>
* @param as_edit_title  string   Title für das Edit image
* @param as_suche_title string   Title für das Suchen Image
* @param as_suche_func  string   Func beim onclick der suche
*/
function f_insert_row_ddlb_text(node_id,as_text_left,as_name,as_edit_title,as_suche_title,as_suche_func,as_text_additional)
{
   var tr_node = document.createElement( "tr" );
   node_id.appendChild(tr_node);
      
   var td_node1 = insert_td(tr_node,as_text_left+":","tdh");
		dom_insert_attribute(td_node1, "nowrap", "nowrap");
	td_node1.style.width = li_text_width;

   var li_width = parseFloat(li_input_width)+parseFloat(5);

   // Text zusammen bauen
    var ls_td = "<div id='div_"+as_name+"_einzeln'>";
	ls_td +=    "<span style='width:" + li_width + "'>";
	ls_td +=       "<input type='text' id='"+as_name+"_edit' style='width:"+li_input_width+";border:0;background-color:"+GS_BGC1+"' onchange=\"this.style.color = 'red'\" readonly value='' >";
	ls_td +=    "</span>&nbsp;";
	ls_td +=    insert_image('bt_edit.png',as_edit_title,'f_show_'+as_name+'_liste()');
   	ls_td +=    insert_image('system-search.png',as_suche_title,as_suche_func);
   	if (as_text_additional) ls_td += as_text_additional;
   	ls_td += "</div>";                           
   	ls_td += "<div id='div_"+as_name+"_liste' style='display:none'>";  
	ls_td +=    "<span style='width:" + li_width + "'>";
   	ls_td +=       "<select id='"+as_name+"_liste' size='1' onchange=\"this.style.color='red';f_change_"+as_name+"_liste()\" style='width:"+li_input_width+"'>";
	ls_td +=       "</select>&nbsp;";
	ls_td +=    "</span>";
   	ls_td +=    insert_image('bt_edit.png',as_edit_title,'f_show_'+as_name+'_text()');
   	ls_td += "</div>";                           

    var td_node2 = insert_td(tr_node,ls_td,"tdd");       

    dom_insert_attribute(td_node2, "nowrap", "nowrap");
   //Hintergrundfarbe des Inputfelds nachträglich setzen
//   document.getElementById(as_name+"_edit").style.backgroundColor = GS_BGC1;
   	    
    return tr_node;   	    
}
/***********************************************************************
* function insert_row_ddlb_edit
*
* einfügen einer Zeile mit links der Beschreibung und rechts einer DDLB
* mit Umschalten auf das Editfeld.
*
* @param node_id        object   table_id
* @param as_text_left   string   text der links steht
* @param as_name        string   prefix für <div>,<input>
* @param as_edit_title  string   Title für das Edit image
*/
function f_insert_row_ddlb_edit(node_id,as_text_left,as_name,as_edit_title)
{
   var tr_node = document.createElement( "tr" );
   node_id.appendChild(tr_node);
      
   var td_node1 = insert_td(tr_node,as_text_left+":","tdh");
   dom_insert_attribute(td_node1, "nowrap", "nowrap");
   td_node1.style.width = li_text_width;

  var li_width = parseFloat(li_input_width)+parseFloat(5);
   // Text zusammen bauen
  var ls_td = "<div id='div_"+as_name+"_einzeln'>";
  ls_td +=    "<span style='width:"+li_width+"'>";
  ls_td +=       "<input type='text' id='"+as_name+"_edit'  style='width:"+li_input_width+"' onchange=\"this.style.color = \'red\';f_change_"+as_name+"_edit(this)\" value='' >";
  ls_td +=    "</span>&nbsp;";
  ls_td +=    insert_image('bt_edit.png',as_edit_title,'f_show_'+as_name+'_liste()');
  ls_td +=    "</div>";                           
  ls_td +=  "<div id='div_"+as_name+"_liste' style='display:none'>";  
  ls_td +=    "<span style='width:" + li_width + "'>";
  ls_td +=       "<select id='"+as_name+"_liste' size='1' onchange=\"this.style.color='red';f_change_"+as_name+"_liste(this)\" style='width:"+li_input_width+"'>";
  ls_td +=       "</select>";
  ls_td +=    "</span>&nbsp;";
  ls_td +=    insert_image('bt_edit.png',as_edit_title,'f_show_'+as_name+'_edit()');
  ls_td += "</div>";                           

   var td_node2 = insert_td(tr_node,ls_td,"tdd");       
   dom_insert_attribute(td_node2, "nowrap", "nowrap");
   	       	    
   return tr_node;   	    
}
/***
* function f_insert_row_radio
*
* einfügen einer Zeile mit links der BEschreibung und einer 
* Gruppe von radibuttons.
* 
* @param node_id        object   table_id
* @param as_text_left   string   text der links steht
* @param ar_entry		   mixed    
* @param al_checked		int		Welcher soll vordefiniert sein.
*/
function f_insert_row_radio(node_id,as_text_left,as_name,ar_entry,al_checked)
{
	var ll_count = ar_entry.length;
   var tr_node = document.createElement( "tr" );
   node_id.appendChild(tr_node);
      
   var td_node1 = insert_td(tr_node,as_text_left+":","tdh");
		dom_insert_attribute(td_node1, "nowrap", "nowrap");
	td_node1.style.width = li_text_width;

	var ls_td = '';
	for(var i=0;i<ll_count;i++)
	{
		var ls_value = ar_entry[i].value;
		var ls_text	 = ar_entry[i].text;
		ls_td += "<input id='"+as_name+"_"+(i+1)+"_"+ll_count+"' type='radio' value='"+ls_value+"' onclick='f_change_"+as_name+"(this)' style='width:50'";
		if (i == al_checked)
			ls_td += ' checked ';
		ls_td += '>'+ls_text;
		if (i < ll_count)
			ls_td += '<br>';			
	}
	
   var td_node2 = insert_td(tr_node,ls_td,"tdd");       
		dom_insert_attribute(td_node2, "nowrap", "nowrap");
   	    
   return tr_node;   	    
}

/***
* f_submaske()
* 
* Ajax Callback Funktion
* 
* @param ls_neu mixed Neues Tab
* @param lb_check boolean soll gecheckt werden oder nicht [optional] 
*									default:true
* 
*/
function f_submaske ( ls_neu, lb_check )
{
//	alert("neu=" + ls_neu + ",alt=" + ls_last_lasche);
	
	if ((typeof lb_check) == "undefined")
		lb_check = true;
			
	// Wenn gleich mit last oder bereits abgeschlossen, dann nix tuen 
	if (ls_neu == ls_last_lasche)
		return false;
	
	//Wenn abgeschlossen wurde, darf man nur noch ins Archiv, aber von dort nicht mehr weg
	if(GB_ABGESCHLOSSEN == 1)
	   return false;

    showElement("div_text", true);	

	//Erst beim Abschluss werden alle Laschen überprüft
	if(ls_neu == "head_abschluss")
	{
	  hideElement("div_text", true);

	  var ret = check_rules(aa_input_tags["head_stelle"]);
	  if (ret != true) 
	  {
		f_submaske ( "head_stelle", false )

		if (ret == "lnd_id") document.getElementById("land_liste").focus();
		else if (ret == "nat_id") document.getElementById("nat_liste").focus();
		else document.getElementById(ret).select();
		return false;
	  }
	  var ret = check_rules(aa_input_tags["head_abhol"]);
	  if (ret != true) 
	  {
		f_submaske ( "head_abhol", false )
        
        if (ret == "plz_id") document.getElementById("plz_liste").focus();
		else if (ret == "ort_id") document.getElementById("ort_liste").focus();
		else document.getElementById(ret).select();
		return false;
	  }

      //Liste der zu überprüfenden Felder aktualisieren
      f_change_fingrund_edit(document.getElementById("fingrund_edit"));
	  if (check_rules(aa_input_tags["head_kfz"]) != true)
	  { 	      
	      f_submaske ( "head_kfz", false );
	      return false;		      
	  }
	  if(document.getElementById("her_id").value == -1)
	  {
	      alert(la_msg[75]);
	      f_submaske ( "head_kfz", false );
	      return false;		  
	  }
	  
	  if(document.getElementById("eigengewicht_edit"))
	  {
		  //Falls das Eigengewicht nicht ganzzahlig und nicht ,0 ist wird eine Meldung ausgegeben
		  if(!f_is_integer(document.getElementById("eigengewicht_edit")))
			alert(la_msg[70]);
	  }
	  
  	  // Teile
	  var teile = document.getElementsByName("cbx_fehlend");
	  for(var i=0;i<teile.length;i++)
 	  {
		if (teile[i].checked == true)
		{
			var ls_name = "menge_"+teile[i].id.substr(4);
			if (single_check(ls_name,REQUIRED_RULE,la_msg[65]) != true)
			{
				f_submaske ( "head_kfz", false );
				return;
			}
			if (single_check(ls_name,NUMERIC_RULE,la_msg[62]) != true)
			{
				f_submaske ( "head_kfz", false );
				return;
			}
		}
	  }  
	}
	
	if(ls_neu == "head_abschluss")
	  hideElement("cb_weiter", true);
	else
	  showElement("cb_weiter", true);
	  
    
	// Alles OK, dann umschalten
	f_switch_tab(ls_last_lasche,false);
	f_switch_tab(ls_neu,true);

	// Falls die letzte aktiviert wird,
	// müssen die Felder aktualisert werden
	if (ls_neu == "head_abschluss")
		f_update_abschluss();	
		
	if (ls_neu == "head_kfz")
		f_update_kfz();	

	// Wechsel speichern
	ls_last_lasche = ls_neu;
		
}

/***
* Uebergeben werden head_*, daraus wird div_* gemacht
*
* @param ls_tab string name des Tabs
* @param lb_action boolean enablen|disablen
*/
function f_switch_tab(ls_tab,lb_action)
{
	var ls_div_tab = ls_tab.replace(/head_/,"div_");
	if (lb_action)
	{	// FETT machen
		// document.getElementById(ls_tab).style.fontWeight = 'bold';
		// document.getElementById(ls_tab).style.color = '#000000';
		// Div enablen
		document.getElementById(ls_tab).className ="tdla";
		showElement(ls_div_tab,true);
		// Dunkler Hintergrung
		// document.getElementById(ls_tab).style.backgroundImage = "url(../images/reiter_a.gif)";
		// document.getElementById(ls_tab).style.borderBottom = "0px solid #FFFFFF";
	} else {		
		// document.getElementById(ls_tab).style.fontWeight = 'normal';
		document.getElementById(ls_tab).className ="tdlp";
		hideElement(ls_div_tab,true);
		// document.getElementById(ls_tab).style.backgroundImage = "url(../images/reiter_p.gif)";	
		// document.getElementById(ls_tab).style.borderBottom = "1px solid #FFFFFF";
		// document.getElementById(ls_tab).style.marginRight = "2"; 
		// document.getElementById(ls_tab).style.color = '#000000';
	}
	
}

function f_closeDetail ( )
{
	if (windowSuche)
	  	if (windowSuche.closed == false) 
  			windowSuche.close();
	if (windowDetail)
	  	if (windowDetail.closed == false) 
  			windowDetail.close();
	if (windowPdf)
	  	if (windowPdf.closed == false) 
  			windowPdf.close();
}

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 || e.keyCode == 9 )
  	  {
   	    window.focus(); //durch Wechsel des Fokus, wird onchange ausgeführt
	  }	
	}
}
function f_home()
{
  document.form1.action = "../welcome/welcome.php";
  document.form1.target = "_self";
  document.form1.lb_next.value="";
  document.form1.submit();
}

function f_nochmal()
{
  document.form1.action = "../welcome/welcome.php";
  document.form1.target = "_self";
  document.form1.lb_next.value="1";
  document.form1.submit();
}

function f_next()
{
  switch(ls_last_lasche)
  {
		case "head_stelle":
			f_submaske("head_abhol");
			break;
		case "head_abhol":
			f_submaske("head_kfz");
			break;			
		case "head_kfz":
	   	    f_submaske("head_abschluss");
			break;
  }
}
