<?php
	require_once("../config/connect.php");
	require_once("sITeditor_global_functions.php");
	
	//print_r($_REQUEST);
	function save_line()
	{
		log_to_file("Funktion save_line gestartet");
		$konfiguration_json=$_REQUEST['konfiguration'];
		$konfiguration_json = urldecode($konfiguration_json); 
		$konfiguration=json_decode($konfiguration_json, true);
	
		$sql_fields_string="";
		$insert_id=false;
		foreach ($_REQUEST as $key => $value)
		{
			// wenn es nicht der erste Wert ist, dann mit Beistrich trennen
			if ($key!=='sITeditor_table_name' && $key!=='sITeditor_key_name'&& $key!=='funktion' && $key!=='konfiguration')
			{
				if ($sql_fields_string!=="") $sql_fields_string.=", ";
				$sql_fields_string.="`$key`='".mysql_real_escape_string ($value)."'";
			}
		}
		$tabelle=$_REQUEST['sITeditor_table_name'];
		$key=$_REQUEST['sITeditor_key_name'];
		$key_value=$_REQUEST[$key];
		if ($key_value==="")
		{
			$sql="INSERT INTO $tabelle SET $sql_fields_string ";
		}
		else 
		{
			$sql2="SELECT $key FROM $tabelle WHERE $key='".$key_value."'";
			$Q2=mysql_query($sql2);
			if (mysql_num_rows($Q2)==0) $sql="INSERT INTO $tabelle SET $sql_fields_string ";
			else $sql="UPDATE $tabelle SET $sql_fields_string WHERE $key='".$key_value."'";
		}
		//echo $sql;
		// TODO: Alex History
		log_to_file("Satz wird eingefügt :".$sql);
		$Q1=mysql_query($sql);
		if (! $Q1) 
		{
			echo "Programmfehler : ".mysql_error();
			echo "Befehl: $sql";
			log_to_file("Programmfehler :".mysql_error());
		}
		else 
		{
			$insert_id=mysql_insert_id();
			// Wenn es das Kapitel nicht gibt, dann lege es an
			if (array_key_exists('chapter', $konfiguration))
			{
				$chapter_table=$konfiguration['chapter']['table'];
				$chapter_id=$konfiguration['chapter']['id'];
				$chapter_view=$konfiguration['chapter']['view'];
				$chapter_number=$konfiguration['chapter']['number'];
				$filter = get_filter($konfiguration);
				
				$sql_find_kapitel="SELECT $chapter_number FROM $chapter_table $filter AND $chapter_number=$_REQUEST[$chapter_number]";
				//echo $sql_find_kapitel;
				$Q3=mysql_query($sql_find_kapitel);
				// Kapitel anlegen, wenn es das Kapitel nicht gibt
				if (mysql_num_rows($Q3)==0) 
				{
					// Wenn ein Filter gesetzt ist, dann soll im chapter z.b. auch kapitel=22 gesetzt werden!!!
					$filter_ohne_where=str_replace("WHERE", "", $filter);
					$sql4="INSERT INTO $chapter_table SET $chapter_number=$_REQUEST[$chapter_number], $filter_ohne_where ";
					log_to_file("Kapitel wurde nicht gefunden - lege neu an");
					log_to_file($sql4);
					$Q4=mysql_query($sql4);
				}
			}
			// Kein reload der Seite mehr - wurde in iframe versteckt!
			//echo $_SERVER['HTTP_REFERER'];
			//header("Location: {$_SERVER['HTTP_REFERER']}");
			
		}
		echo $insert_id;
		log_to_file("Satz eingefügt mit ID:".$insert_id);
	}
	
	function delete_line()
	{
		log_to_file("Funktion delete_line gestartet");
		$konfiguration_json=$_REQUEST['konfiguration'];
		$konfiguration_json = urldecode($konfiguration_json); 
		$konfiguration=json_decode($konfiguration_json, true);
		$key_value=$_REQUEST['key'];
		$key=$konfiguration['key'];
		$tabelle=$konfiguration['table'];
		//var_dump($konfiguration);

		if ($key_value==="")
		{
			echo "ERROR: no key value sent to delete";
		}
		else 
		{
			if (array_key_exists('functions_delete_sql', $konfiguration))
			{
				$sql=$konfiguration['functions_delete_sql'];
				$sql=str_replace("§§id§§", $key_value, $sql );
			}
			else $sql="DELETE FROM $tabelle WHERE $key='".$key_value."'";
		}
		
		//echo $sql;
		log_to_file("Loeschen wird ausgefuehrt :".$sql);
		
		$Q1=mysql_query($sql);
		if (! $Q1) 
		{
			echo "Programmfehler : ".mysql_error();
			echo "Befehl: $sql";
		}
		else header("Location: {$_SERVER['HTTP_REFERER']}");
		
	}
	
	function delete_chapter()
	{
		log_to_file("Funktion delete_chapter gestartet");
		$konfiguration_json=$_REQUEST['konfiguration'];
		$konfiguration_json = urldecode($konfiguration_json); 
		$konfiguration=json_decode($konfiguration_json, true);
		$key_value=$_REQUEST['key'];
		
		if (array_key_exists('chapter', $konfiguration))
		{
			$chapter_anzeigen=true;
			$chapter_table=$konfiguration['chapter']['table'];
			$chapter_id=$konfiguration['chapter']['id'];
			$chapter_view=$konfiguration['chapter']['view'];
			$chapter_number=$konfiguration['chapter']['number'];
		}
		
		// schau ob es ein produkt mit diesem Kapitel gibt,
		// wenn ja, dann löschen nicht zulassen!
		$filter = get_filter($konfiguration);
		$check_table=$konfiguration['table'];
		$sql_find_kapitel="SELECT $chapter_number FROM $chapter_table WHERE $chapter_id=$key_value";
		$sql2="SELECT $chapter_number FROM $check_table $filter AND $chapter_number=($sql_find_kapitel)";
		$Q2=mysql_query($sql2);
		if (mysql_num_rows($Q2)>0)
		{
			echo '<script>
				alert "Fehler - es gibt noch Produkte in diesem Chapter";
			</script>';
			exit;
		}
		else
		{
			echo $sql2;
			echo "keine Produkte - kann gelöscht werden";
		}
		//exit;
		// Ende check ob es Produkte gibt
	
		$tabelle=$konfiguration['table'];
		//var_dump($konfiguration);

		if ($key_value==="")
		{
			echo "ERROR: no key value sent to delete";
		}
		else 
		{
			if (array_key_exists('functions_delete_sql', $konfiguration))
			{
				$sql=$konfiguration['functions_delete_sql'];
				$sql=str_replace("§§id§§", $key_value, $sql );
			}
			else $sql="DELETE FROM $chapter_table WHERE $chapter_id='".$key_value."'";
		}
		
		//echo $sql;

		$Q1=mysql_query($sql);
		if (! $Q1) 
		{
			echo "Programmfehler : ".mysql_error();
			echo "Befehl: $sql";
		}
		else header("Location: {$_SERVER['HTTP_REFERER']}");
		
	}
	
	// auswahl aus einem array anzeigen
	function sIT_edit_array_lookup_feld($feldname, $row, $konfiguration_feld, $filter)
	{
		$feld_wert=$row[$feldname];
		$ergebnis_array=$konfiguration_feld['lookup_array'];
		//echo $ergebnis_array[$feld_wert];
		$disabled=check_disabled_wert($konfiguration_feld, $filter);
		echo "<select name='".$feldname."' id='".$feldname."_sIT_id' $disabled>";
		foreach ($ergebnis_array as $key=>$value)
		{
			//echo "$feld_wert - $key";
			$selected="";
			if ($feld_wert!=="" && $key==$feld_wert) $selected=" selected "; 
			echo '<option value="'.$key.'" '.$selected.'>'.$value.'</option>';
		}
		echo "</select>";
		
	}

	// macht die jquery funktion, falls eine validation notwendig ist.
	function get_validation_string($konfiguration_feld)
	{
		$feldname=$konfiguration_feld['feldname'];
		$return_string="";
		
		if (array_key_exists('validation', $konfiguration_feld))
		{
			
			if ($konfiguration_feld['validation']==='required')
			{
				$return_string="
					<script>
					$('#".$feldname."_sIT_id').on('change', function() 
						{ 
							validate_input_required($(this) );
							check_alle_validation_fields();
						});
					$('#".$feldname."_sIT_id').trigger('change');
					</script>";
			}
			if ($konfiguration_feld['validation']==='float')
			{
				$return_string="
					<script>
					$('#".$feldname."_sIT_id').on('change', function() { validate_input_float($(this) );});
					$('#".$feldname."_sIT_id').trigger('change');
					</script>";
			}
			// Schneidet alles weg, das keine Ziffern sind!
			if ($konfiguration_feld['validation']==='nur_ziffern_zulassen')
			{
				$return_string="
					<script>
					$('#".$feldname."_sIT_id').on('keyup', function() { regexp_zeichen_abschneiden($(this), /[^\\d]/ );});
					$('#".$feldname."_sIT_id').trigger('keyup');
					</script>";
			}
		}
		return($return_string);
	}
	
	function get_edit_input_option($konfiguration_feld)
	{
		$result="";
		if(array_key_exists('edit_input_option',$konfiguration_feld)) 
		{
			if(array_key_exists('size',$konfiguration_feld['edit_input_option'])) 
			{
				$result="size='".$konfiguration_feld['edit_input_option']['size']."'";
			}
			if(array_key_exists('maxlength',$konfiguration_feld['edit_input_option'])) 
			{
				$result.=" maxlength='".$konfiguration_feld['edit_input_option']['maxlength']."'";
			}
			if(array_key_exists('rows',$konfiguration_feld['edit_input_option'])) 
			{
				$result.=" rows='".$konfiguration_feld['edit_input_option']['rows']."'";
			}
			if(array_key_exists('cols',$konfiguration_feld['edit_input_option'])) 
			{
				$result.=" cols='".$konfiguration_feld['edit_input_option']['cols']."'";
			}
			if(array_key_exists('css',$konfiguration_feld['edit_input_option'])) 
			{
				$result.=" style='".$konfiguration_feld['edit_input_option']['css'].";max-width:100%;'";
			}
			else $result.=" style='max-width:100%;'";
		}
		return($result);
	}
	
	function sIT_edit_text_feld($feldname, $row, $konfiguration_feld, $filter)
	{
		$wert=$row[$feldname];
		
		if (empty($wert)) // Falls der Wert leer ist, dann setze den default_value ein
		{
			$wert=get_default_value($konfiguration_feld);
		}
		
		if (ist_feld_gefiltert($konfiguration_feld, $filter))
		{
			$wert=get_wert_von_filter($filter);
		}
		
		// Wenn es ein fixed gibt, dann diesen setzen!
		if(array_key_exists('fixed',$konfiguration_feld)) 
		{
			$wert=$konfiguration_feld['fixed'];
		}
		
		$disabled=check_disabled_wert($konfiguration_feld, $filter);
		$class="";
		$color_picker="";
		if(array_key_exists('edit',$konfiguration_feld)) 
		{
			if ($konfiguration_feld['edit']==='datepicker')
			{
				$class='class="datepicker"';
			}
			if ($konfiguration_feld['edit']==='jscolor')
			{
				//$class='class="jscolor {valueElement:null}"';
				// Ein weiteres Feld mit colorpicker machen und mit jquery in das Originalfeld schreiben
				$color_picker='<input id="'.$feldname.'_jscolor_sIT_id" class="jscolor" value="'.htmlentities($wert).'">';
				$color_picker.='<script>
				$(document).ready(function() {
				$("#bg_color_jscolor_sIT_id").change(function(){
					bg_color=$("#bg_color_jscolor_sIT_id").val();
					//alert(bg_color);
				$("#bg_color_sIT_id").val("#" + bg_color );
				}
				)
				})
				</script>';
				$disabled=" readonly ";
			}
		}
		$input_option=get_edit_input_option($konfiguration_feld);

		echo '<input type="text" value="'.htmlentities($wert).'" '.$input_option.' '.$class.' name="'.$feldname.'" id="'.$feldname.'_sIT_id" autocomplete="off" '.$disabled.'>';
		$required=get_validation_string($konfiguration_feld);
		echo $required;
		echo $color_picker;
	}
	
	function sIT_edit_time_feld($feldname, $row, $konfiguration_feld, $filter)
	{
		$wert=$row[$feldname];
		if (empty($wert)) // Falls der Wert leer ist, dann setze den default_value ein
		{
			$wert=get_default_value($konfiguration_feld);
		}

		if (ist_feld_gefiltert($konfiguration_feld, $filter))
		{
			$wert=get_wert_von_filter($filter);
		}
		// Wenn es ein fixed gibt, dann diesen setzen!
		if(array_key_exists('fixed',$konfiguration_feld)) 
		{
			$wert=$konfiguration_feld['fixed'];
		}
		
		$disabled=check_disabled_wert($konfiguration_feld, $filter);

		$input_option=get_edit_input_option($konfiguration_feld);
		
		echo '<input type="text" value="'.htmlentities($wert).'" '.$input_option.' class="timepicker" name="'.$feldname.'" id="'.$feldname.'_sIT_id" autocomplete="off" '.$disabled.'>';
				
		$required=get_validation_string($konfiguration_feld);
		echo $required;
	}
	
	function sIT_edit_textarea_feld($feldname, $row, $konfiguration_feld, $filter)
	{
		$wert=$row[$feldname];
		if (ist_feld_gefiltert($konfiguration_feld, $filter))
		{
			$wert=get_wert_von_filter($filter);
		}
		$disabled=check_disabled_wert($konfiguration_feld, $filter);
		$class="";
		if(array_key_exists('edit',$konfiguration_feld)) 
		{
			if ($konfiguration_feld['edit']==='datepicker')
			{
				$class='class="datepicker"';
			}
		}
		$input_option=get_edit_input_option($konfiguration_feld);
		
		echo '<textarea style="max-width:100%;" '.$input_option.' '.$class.' name="'.$feldname.'" id="'.$feldname.'_sIT_id" autocomplete="off" '.$disabled.'>'.htmlentities($wert).'</textarea>';
		$required=get_validation_string($konfiguration_feld);
		echo $required;
	}

	function sIT_edit_dummy_feld($feldname, $row, $konfiguration_feld, $filter)
	{
		$disabled=check_disabled_wert($konfiguration_feld, $filter);
		$input_option=get_edit_input_option($konfiguration_feld);
		$wert="";
		// Wenn es ein fixed gibt, dann diesen setzen!
		if(array_key_exists('fixed',$konfiguration_feld)) 
		{
			$wert=$konfiguration_feld['fixed'];
		}
		echo '<input type="text" '.$input_option.' value="'.$wert.'" id="'.$feldname.'_sIT_id" autocomplete="off" '.$disabled.'>';
		// style="width:100%;"  rausgenommen
	}
	
	// Editiert ein Table Lookup Feld
	function sIT_edit_table_lookup_feld($feldname, $row, $konfiguration_feld, $filter)
	{
		$feld_wert=$row[$feldname];
		if (ist_feld_gefiltert($konfiguration_feld, $filter))
		{
			$feld_wert=get_wert_von_filter($filter);
		}
		
		$ergebnis_array=$konfiguration_feld['lookup_table'];
		//var_dump($ergebnis_array);
		if (! empty($feld_wert))
		{
			//Zuerst die jetzt eingestellten Daten anzeigen
			if (array_key_exists('lookup_show_fields_glue',$ergebnis_array)) $glue=$ergebnis_array['lookup_show_fields_glue'];
				else $glue=" ";
			$table=$ergebnis_array['table'];
			$lookup_field=$ergebnis_array['lookup_field'];
			$lookup_show_fields=$ergebnis_array['lookup_show_fields'];
			//print_r($lookup_show_fields);
			$lookup_show_fields_text=implode(",", $lookup_show_fields);

			if (array_key_exists('lookup_set_additional_fields', $ergebnis_array))
			{
				$lookup_add_show_fields=$ergebnis_array['lookup_set_additional_fields'];
				$lookup_add_show_fields_text=implode(",", $lookup_add_show_fields);
				//echo $lookup_add_show_fields_text;
				$lookup_show_fields_text=$lookup_show_fields_text.",".$lookup_add_show_fields_text;
			}
			$join_text="";
			if (array_key_exists('lookup_join', $ergebnis_array))
			{
				$join_text=$ergebnis_array['lookup_join'];
			}
			
			$wert="";
			$lookup_feld_where=get_string_with_as($lookup_field, 'left');
			$sql="SELECT $lookup_show_fields_text FROM $table $join_text WHERE $lookup_feld_where='".$feld_wert."' ";
			//echo $sql;
			$Q1=mysql_query($sql);
			if (!$Q1) 
			{
				echo "Fehler  : ".mysql_error().". ";
				echo "Command : ".$sql;
			}
			else
			{
				while ($row=mysql_fetch_assoc($Q1))
				{
					$result=implode($glue, $row);
					$wert=$result;
				}
			}
		}
		else $wert="";
		// zuerst den voreingestellten wert raussuchen!
		//und jetzt anzeigen
		$disabled=check_disabled_wert($konfiguration_feld, $filter);
		if(array_key_exists('edit',$konfiguration_feld)) 
		{
			if ($konfiguration_feld['edit']==='lookup')
			{
				$input_option=get_edit_input_option($konfiguration_feld);
				echo '<input type="text" style="float:left;" '.$input_option.' id="'.$feldname.'_sIT_id" value="'.$feld_wert.'" '.$disabled.'>';
				echo '<input type="text" id="'.$feldname.'_value" name="'.$feldname.'" value="'.$feld_wert.'" hidden>';
				echo '<span style="display:block; overflow: hidden;padding-left: 5px;"><input type="text" style="width:100%"  id="'.$feldname.'_show" value="'.$wert.'" readonly></span>';
				// Hier das validation abfragen
				$required=get_validation_string($konfiguration_feld);
				echo $required;
				
				echo '
				<script>
				// muss wieder eine Sekunde warten, sonst geht es nicht!!
				setTimeout(function() {

						
				konfiguration_feld=\''.json_encode($konfiguration_feld).'\';
				$("#'.$feldname.'_sIT_id").autocomplete({
					source: function(request, response) {
							$.getJSON("sITeditor/sITeditor_ajax_functions.php", 
							{ funktion: "search_lookup_fields", term: request.term, konfiguration_feld: \''.json_encode($konfiguration_feld).'\' }, 
									  response);
						  },
					autoFocus: true,
					minLength: 1,
					select: function(event, ui){
						//action
						$("#'.$feldname.'_value").val(ui.item.value);
						$("#'.$feldname.'_show").val(ui.item.label);
						
						// für additional Felder jetzt alle eintragen
						var myStringArray = ui.item.add;
						var arrayLength = myStringArray.length;
						for (var i = 0; i < arrayLength; i++) {
							key=myStringArray[i][0];
							key_show=key+"_show";
							key=key+"_sIT_id";
							//alert(key);
							value=myStringArray[i][1];
							$("#"+key).val(value);
							$("#"+key_show).val("");
							//Do something
						}
					  }
				});
				$("#'.$feldname.'_show").val(ui.item.label);
				},1000);
				</script>
				';
			}
			
			if ($konfiguration_feld['edit']==='dropdown')
			{
				$input_option=get_edit_input_option($konfiguration_feld);
				echo '<select name="'.$feldname.'" id="'.$feldname.'_sIT_id">';
				$result=get_werte_from_lookup_table($konfiguration_feld, "%");
				
				//echo "<option value='' > Please Select </option>";
				if(array_key_exists('add_select_value',$konfiguration_feld))
				{
					echo "<option value='".$konfiguration_feld['add_select_value']['value']."'>". $konfiguration_feld['add_select_value']['label']."</option>";
					//if ($konfiguration_feld['add_select_value']==='')
				}
				
				foreach ($result as $line)
				{
					if ($feld_wert===$line['value']) $selected="selected";
					else $selected="";
					echo "<option value='".$line['value']."' $selected>". $line['label']."</option>";
				}
				
				echo '</select>';
				$required=get_validation_string($konfiguration_feld);
				echo $required;
			}
		}
		else echo "kein 'edit' in konfiguration definiert - lookup/dropdown eingeben";
		
	}

	// Editiert eine Zeile (Datensatz) - oder Added neue
	function sIT_edit_line()
	{
		log_to_file("Funktion sIT_edit_line gestartet");
		$konfiguration_json=$_REQUEST['konfiguration'];
		//var_dump($konfiguration_json);
		$konfiguration_json = urldecode($konfiguration_json); 
		$konfiguration=json_decode($konfiguration_json, true);
		// Wenn copy_line gesetzt ist, dann ist es ein kopieren, nicht editieren
		$copy_line=$_REQUEST['copy_line'];
		//echo $copy_line;
		$tabelle=$konfiguration['table'];
		$key=$konfiguration['key'];
		$key_value=$_REQUEST['key'];
		// Den Post Target auf einen iframe legen, damit die Seite nicht gewechselt wird - damit es nicht flackert!
		echo '<iframe width="0" height="0" border="0" name="dummyframe" id="dummyframe"></iframe>';
		echo "<form id='edit_line_form' target='dummyframe' action='sITeditor/sITeditor_ajax_functions.php' onsubmit='return validate_form()' method='post' >";
		
		echo '<input type="hidden" name="sITeditor_table_name" value="'.$tabelle.'">';
		echo '<input type="hidden" name="sITeditor_key_name" value="'.$key.'">';
		echo '<input type="hidden" name="funktion" value="save_line">';
		//echo '<input type="submit" value="submit">';
		$konfiguration_to_send=urlencode(json_encode($konfiguration));
		echo '<input type="hidden" name="konfiguration" value="'.$konfiguration_to_send.'">';
		
		$filter=false;
		if (array_key_exists('filter', $konfiguration))
		{
			$filter=$konfiguration['filter'];
		}
		$sql="SELECT * from $tabelle WHERE $key='".$key_value."'";
		$Q1=mysql_query($sql);
		if (! $Q1) echo "Fehler: ".mysql_error();
		
		// wenn die anzahl gleich null ist, dann initialisiere row als leere strings
		if (mysql_num_rows($Q1)===0)
		{
			foreach ($konfiguration['fields'] as $feld)
			{
				$row[$feld['feldname']]="";
			}
		}
		else $row=mysql_fetch_assoc($Q1);
		if($copy_line==='true') $row[$key]="";
		
		// Tabs aufbauen, falls es welche gibt
		$tabs=false;
		$first_tab=true;
		if (array_key_exists('tabs', $konfiguration))
		{
			$tabs=true;
			echo '<div id="tabs"><ul>';
			$tabs=$konfiguration['tabs'];
			foreach ($tabs as $tab)
			{
				echo '<li><a href="#tabs-'.$tab.'">'.$tab.'</a></li>';
			}
			echo '</ul>';
		}
		
		foreach ($konfiguration['fields'] as $feld)
		{
			// Aber nur, wenn es im edit angezeigt werden soll
			if (in_array('edit', $feld['view_options']))
			{
				if (array_key_exists('tabs', $feld))
				{
					if (!$first_tab) 
					{
						echo '</div>';
					}
					$first_tab=false;
					echo '<div id="tabs-'.$feld['tabs'].'">';
				}
				$css=get_css_for_field($feld, 'css_edit_row');
				//echo "<div $css>";
				echo "<div style='width:100%; float:left;'>";
				echo "<span style='width:25%; float:left;'>";
				echo $feld['header'];
				echo "</span>";
				// und jetzt die einzelnen Daten Felder
				$css=get_css_for_field($feld, 'css_edit');
				echo "<div $css>";
				switch ($feld['type'])
				{
					case 'text':
						sIT_edit_text_feld($feld['feldname'], $row, $feld, $filter);
					break;
					case 'time':
						sIT_edit_time_feld($feld['feldname'], $row, $feld, $filter);
					break;
					case 'textarea':
						sIT_edit_textarea_feld($feld['feldname'], $row, $feld, $filter);
					break;
					case 'array_lookup':
						sIT_edit_array_lookup_feld($feld['feldname'], $row, $feld, $filter);
					break;
					case 'table_lookup':
						sIT_edit_table_lookup_feld($feld['feldname'], $row, $feld, $filter);
					break;
					case 'dummy':
						sIT_edit_dummy_feld($feld['feldname'], $row, $feld, $filter);
					break;
					default:
						echo "Fehler - unbekannter Typ ".$feld['type'];
				}
				echo "</div>";
				echo "</div>";
			}
		}
		if ($tabs) echo '</div></div>';	
		
		echo "</form>";
		
		// und jetzt die javascripts einfügen
		echo '<script>
				$(document).ready (function ()
				{';
				$javascript="";
				if (array_key_exists('javascript_edit_line', $konfiguration))
				{
					$javascript=$konfiguration['javascript_edit_line'];
				}
				echo $javascript;
		echo '}); </script>';
		
		echo "<script>
		jscolor.installByClassName('jscolor');
		  $( function() {
			$( '#tabs' ).tabs();
		  } );
		</script>";
	
		echo "<script>
		$(document).ready(function(){
			$('.timepicker').timepicker(
				{
					controlType: 'select',
					timeFormat: 'HH:mm',
					showMillisec: false,
					showSecond: false,
					showMicrosec: false
				});
		});
		</script>";
	
	}
	
	// Suchen für Lookup Felder !!
	// das ist die search Funktion für ein lookup Feld!!
	// macht ein Array mit den Werten, die als select ausgegeben werden sollen!
	function get_werte_from_lookup_table($konfiguration_feld, $search_string)
	{
		$ergebnis=array();
				
		$feldname=$konfiguration_feld['feldname'];
		$ergebnis_array=$konfiguration_feld['lookup_table'];
		//var_dump($ergebnis_array);
		
		if (array_key_exists('lookup_show_fields_glue',$ergebnis_array)) $glue=$ergebnis_array['lookup_show_fields_glue'];
			else $glue=" ";
		$table=$ergebnis_array['table'];
		$lookup_field=$ergebnis_array['lookup_field'];
		$lookup_show_fields=$ergebnis_array['lookup_show_fields'];
		//print_r($lookup_show_fields);
		$lookup_show_fields_text=implode(",", $lookup_show_fields);
		
		// Falls noch zusätzlich Felder gesetzt werden sollen
		$lookup_add_show_fields=array();
		
		if (array_key_exists('lookup_set_additional_fields', $ergebnis_array))
		{
			$lookup_add_show_fields=$ergebnis_array['lookup_set_additional_fields'];
			$lookup_add_show_fields_text=implode(",", $lookup_add_show_fields);
			//echo $lookup_add_show_fields_text;
			$lookup_show_fields_text=$lookup_show_fields_text.",".$lookup_add_show_fields_text;
		}
		
		//print_r($lookup_show_fields);
		// Wenn ein key mit AS kommt z.b. SELECT products.NAME as NAME ... dann nur den Rechten Teil nehmen
		$lookup_show_where_fields=array();
		foreach ($lookup_show_fields as $key=>$value)
		{
			//echo $lookup_show_fields[$key];
			$pos=stripos($value, " as ");
			if ($pos !== false) 
			{
				// für den where string muss der erste Teil genommen werden products.NAME
				$lookup_show_where_fields[$key]=substr($lookup_show_fields[$key],0,$pos);
				$lookup_show_fields[$key]=substr($lookup_show_fields[$key],$pos+4);
			}
			else $lookup_show_where_fields[$key]=$lookup_show_fields[$key];
		}
		
		// hier den where string zusammenbauen - alle Felder die angezeigt werden, werden auch durchsucht
		$where_string="WHERE (";		
		$first=true;	
		foreach ($lookup_show_where_fields as $where_field)
		{
			if ($first)	$where_string.="($where_field LIKE '%".$search_string."%')";
			else $where_string.=" OR ($where_field LIKE '%".$search_string."%')";
			$first=false;
		}
		$where_string.=")";
		//echo "Where String :".$where_string;
		
		$join_text="";
		if (array_key_exists('lookup_join', $ergebnis_array))
		{
			$join_text=$ergebnis_array['lookup_join'];
			
		}
		
		$lookup_filter="";
		if (array_key_exists('lookup_filter', $ergebnis_array))
		{
			$lookup_filter=$ergebnis_array['lookup_filter'];
			$where_string="$where_string AND $lookup_filter ";
			//echo $where_string;
		}
		
		$order_text="";
		if (array_key_exists('lookup_order', $ergebnis_array))
		{
			$order_text=$ergebnis_array['lookup_order'];
		}
		
		// Default Value setzen 	
		if (array_key_exists('default_value', $konfiguration_feld))
		{		
			//$result=array('value'=>$value, 'label'=>$anzeige, 'add'=>$additional);
			$result=array('value'=>$konfiguration_feld['default_value']['value'], 'label'=>$konfiguration_feld['default_value']['label'], 'add'=>'');
			array_push($ergebnis, $result);
		}
		
		$sql="SELECT $lookup_field, $lookup_show_fields_text FROM $table $join_text $where_string $order_text";
		log_to_file("SQL:".$sql);
		$Q1=mysql_query($sql);
		if (!$Q1) 
		{
			echo "Fehler  : ".mysql_error().". ";
			echo "Command : ".$sql;
		}
		else
		{
			
			while ($row=mysql_fetch_assoc($Q1))
			{
				$anzeige="";
				foreach ($lookup_show_fields as $lookup_feld)
				{
					if ($anzeige!=="") $anzeige.=",".$row[$lookup_feld];
					else $anzeige.=$row[$lookup_feld];
				}
				
				$additional=array();
				foreach ($lookup_add_show_fields as $key=>$lookup_feld)
				{
					$lookup_show_where_fields=array();
			
					//echo $lookup_show_fields[$key];
					$pos=stripos($lookup_feld, " as ");
					if ($pos !== false) 
					{
						// für den where string muss der erste Teil genommen werden products.NAME
						$lookup_feld=substr($lookup_feld,$pos+4);
					}
					//else $feldname_ohne_AS=$row[$lookup_feld];
					array_push($additional, array($key, $row[$lookup_feld]));
				}
				
				//echo $anzeige;
				//echo $additional;
				
				// Falls es beim lookup Feld (quasi der Rückgabewert) ein AS gibt, dann nur dne rechten Teil nehmen
				$lookup_field_as=$lookup_field;
				$pos=stripos($lookup_field_as, " as ");
					if ($pos !== false) 
					{
						// für den where string muss der erste Teil genommen werden products.NAME
						$lookup_field_as=substr($lookup_field_as,$pos+4);
					}
				$value=$row[$lookup_field_as];
				$result=array('value'=>$value, 'label'=>$anzeige, 'add'=>$additional);
				if ($value!=='') array_push($ergebnis, $result);
			}
		}
		//var_dump($ergebnis);
		return($ergebnis);
	}
	
	function create_search_result_for_lookup()
	{
		$search_string=$_REQUEST['term'];
		$konfiguration_feld_json=$_REQUEST['konfiguration_feld'];
		$konfiguration_feld_json = urldecode($konfiguration_feld_json); 
		$konfiguration_feld=json_decode($konfiguration_feld_json, true);
	
		//$konfiguration_feld=$_REQUEST['konfiguration_feld'];
		$return_arr=get_werte_from_lookup_table($konfiguration_feld, $search_string);
		echo json_encode($return_arr);
	}
	
	function sIT_view_line()
	{
		log_to_file("Funktion sIT_view_line gestartet");
		$konfiguration_json=$_REQUEST['konfiguration'];
		$konfiguration_json = urldecode($konfiguration_json); 
		$konfiguration=json_decode($konfiguration_json, true);
	
		$tabelle=$konfiguration['table'];
		$key=$konfiguration['key'];
		$key_value=$_REQUEST['key'];
		echo "<form action='sITeditor/sITeditor_ajax_functions.php' method='post'>";
		echo "<table id='sITtable' class='tablesorter'>";
		echo "<thead>";
		echo "<tr>";
		echo "<th class='sorter-false'>";
		echo "</th>";
		foreach ($konfiguration['fields'] as $feld)
		{
			
		}
		echo '<input type="hidden" name="sITeditor_table_name" value="'.$tabelle.'">';
		echo '<input type="hidden" name="sITeditor_key_name" value="'.$key.'">';
		echo '<input type="hidden" name="funktion" value="save_line">';
		echo "</tr>";
		echo "</thead>";
		echo "<tbody>";
		$sql="SELECT * from $tabelle WHERE $key='".$key_value."'";
		$Q1=mysql_query($sql);
		if (! $Q1) echo "Fehler: ".mysql_error();
		// wenn die anzahl gleich null ist, dann initialisiere row als leere strings
		if (mysql_num_rows($Q1)===0)
		{
			foreach ($konfiguration['fields'] as $feld)
			{
				$row[$feld['feldname']]="";
			}
		}
		else $row=mysql_fetch_assoc($Q1);
			foreach ($konfiguration['fields'] as $feld)
			{
				if (in_array('view', $feld['view_options']))
				{
					echo "<tr>";
					echo "<th>";
					echo $feld['header'];
					echo "</th>";
					// und jetzt die einzelnen Felder
					echo "<td>";
					switch ($feld['type'])
					{
					
						case 'text':
							sIT_text_feld($feld['feldname'], $row, $feld);
						break;
						case 'textarea':
							sIT_text_feld($feld['feldname'], $row, $feld);
						break;
						case 'array_lookup':
							sIT_array_lookup_feld($feld['feldname'], $row, $feld);
						break;
						case 'table_lookup':
							sIT_table_lookup_feld($feld['feldname'], $row, $feld);
						break;
						default:
							echo "Fehler - unbekannter Typ ".$feld['type'];
					}
				
					echo "</td>";
					echo "</tr>";
				}
			}
			
		
		echo "</tbody>";
		echo "</table>";
		echo "</form>";
	}
	
	// die ID ist die tr-ID der Tabelle - also vorher die ID rausschneiden
	function zeige_eine_einzelne_datenzeile_an_ajax()
	{
		//var_dump($_REQUEST);
		$konfiguration_json=$_REQUEST['konfiguration'];
		$konfiguration_json = urldecode($konfiguration_json); 
		$konfiguration=json_decode($konfiguration_json, true);
		$tr_id=$_REQUEST['id'];
		//echo "alte ID: $tr_id";
		if ($tr_id != 'false')
		{
			// suche die letzte underscore raus, alles rechts davon ist dann die ID^
			$pos=strrpos($tr_id,"_");
			$id=substr($tr_id, $pos+1);
			if($konfiguration['table']=="konfiguration"){
				$pos=strpos($tr_id,"_");
				$id=substr($tr_id, $pos+1);
			}
		}
		else
		{	// Wenn keine tr_id angegeben wurde, dann nimm einfach die höchste ID - ich weiß das ist nicht (ganz) richtig
			$table=$konfiguration['table'];
			$key=$konfiguration['key'];
			$Q1=mysql_query("SELECT MAX($key) as id FROM $table");
			$row=mysql_fetch_assoc($Q1);
			$id=$row['id'];
		}
		//echo "neue ID: $id";
		

		//log_to_file("zeige_eine_einzelne_datenzeile_an(konfiguration, $id)");
		$tr_id=zeige_eine_einzelne_datenzeile_an($konfiguration, $id);
		//log_to_file("Diese tr_id sollte jetzt angezeigt werden: $tr_id");
	}
	
	if (isset($_REQUEST['funktion']))
	{
		$funktion=$_REQUEST['funktion'];
		switch ($funktion)
		{
			
			case 'view_line':
				sIT_view_line();
			break;
			case 'save_line':
				save_line();
			break;
			case 'delete_line':
				delete_line();
			break;
			case 'delete_chapter':
				delete_chapter();
			break;
			case 'sIT_edit_line':
				sIT_edit_line();
			break;
			case 'search_lookup_fields':
				create_search_result_for_lookup();
			break;
			case 'zeige_eine_einzelne_datenzeile_an_ajax':
				zeige_eine_einzelne_datenzeile_an_ajax();
			break;
			
		}
	}
	else echo "Keine _REQUERST['funktion'] an php übergeben";
	//echo $sql;
?>