
//einige Konstanten
var CONST_errorCol = '#AF0000';			//errorTextFarbe
var CONST_warningCol = '#9F8300';		//warningTextFarbe
var CONST_doneCol = '#359F00';			//okTextFarbe
var CONST_textCol = '#4C5D77';			//normarler Text
var CONST_borderCol = '#DEDEDE';

var CONST_WinNode;
var CONST_WinNodeText;
var CONST_WinNodeHead;
//einige globale Variablen fÃ¼r dieses Script

var bDraggableMarkerEnabled;
var draggableMarker;
var iInputStep;
var arInputData;
var arTabs;
var bNextStep;
var lastOpendTab;
var DBError = 0;
var bIsLoading = false;
var bIsEdit;
var ProviderListTimeout;

/**
* den werten standards zuweisen
* @access public
* @return voiud
**/
function setStandardVars()
{
	bDraggableMarkerEnabled = false;
	bUseReverseGeocoder = true;
	draggableMarker = new GMarker(GMap.getCenter(), {draggable: true});
	iInputStep = 1;
	arInputData = new Array(0, -1, "Sonstige Technik" , "Stra&szlig;e", "Nr.","PLZ *","Ort *", "L&auml;nge", "Breite", "");
	arTabs = new Array();
	bNextStep = true;
	CONST_WinNode = document.getElementById('errOutput');
	CONST_WinNodeText = document.getElementById('errText');
	CONST_WinNodeHead = document.getElementById('errHead');
	lastOpendTab = 0;
	bIsEdit = false;
}

/**
* Platziert einen dragable marker auf der Karte
* @access public
* @retun void
**/
function pushDraggableMarker()
{
	var koord = GMap.getCenter();
	if(arguments[0])
		koord = arguments[0];							//Falls es ums Bearbeiten gibt werden koord Ã¼bergeben
	if(!bDraggableMarkerEnabled)
	{
		ajax.request('checkLogin.php?a=new','get',new Array(),function(result)
			{
				if(result == "1")
				{
					//Vorbereitung
					var html;

					draggableMarker.setLatLng(koord);					//Marker in der mitte der Karte platzieren
					//draggableMarker.disableDragging();				//Das bewegen fÃ¼r den ersten schritt abschalten
					//Listener HinzufÃ¼gen
					GEvent.addListener(draggableMarker, 'infowindowopen', function()
						{
							//wenn das infofenster geÃ¶ffnet wird
							//to do: der schrittfolge nach das infofenster mit inhalt fÃ¼llen. und ggf. daten in die formularfelder schreiben
							//tabs fÃ¼r den aktuellen schritt erstellen
							//buildTabArray(false,true);
							var win = GMap.getInfoWindow();
							win.selectTab(lastOpendTab);
						}
					);
					GEvent.addListener(draggableMarker, 'infowindowbeforeclose', function()
						{
							//wenn das infofenster geschlossen wird
							//daten in array sichern
							var win = GMap.getInfoWindow();
							lastOpendTab = win.getSelectedTab();
							saveFormDataInArray();
						}
					);
					GEvent.addListener(draggableMarker, 'dragstart', function()
						{
							//infofenster schlieÃŸen
							draggableMarker.closeInfoWindow();
						}
					);
					GEvent.addListener(draggableMarker, 'dragend', function()
						{
							//wenn der marker abgesetzt wird
							//Markerpunkt ermitteln
							var MarkerPoint = draggableMarker.getPoint();
							var c = MarkerPoint.lat()+','+MarkerPoint.lng();
							var addi = "";
							if(bIsEdit) addi = "&i="+iEditId;
							//Anfrage fÃ¼r umliegende marker schicken!
							ajax.request('showMarkersByDistance.php?c='+c+addi, 'get', new Array(), function(result)
								{
									//Marker anzeigen. genau wie bei show.js nur ohne unterscheidung zw. clustern, weil die marker nicht geclustert werden!
									var xml = GXml.parse(result);
									var markers = xml.documentElement.getElementsByTagName("marker");
									var arMarkersToMap = new Array();

									if(markers.length > 0)
									{
										//Hinweis einblenden
										CONST_WinNodeText.innerHTML = "Bitte beachten Sie, dass in der Umgebung, der von Ihnen gewÃ¤hlten Position, schon Objekte existieren.";
										CONST_WinNodeHead.innerHTML = "Warnung";
										CONST_WinNodeText.style.color = CONST_warningCol;
										CONST_WinNode.style.display = 'block';
										for(i = 0; i < markers.length; i++)
										{
											var m = createMarker(new GLatLng(parseFloat(markers[i].getAttribute('lat')),
																 parseFloat(markers[i].getAttribute('lng'))),
																 'marker/gm-'+markers[i].getAttribute('typ')+'.png',
																 markers[i].getAttribute('id'),
																 false);
											arMarkersToMap.push(m);
										}
										GMarkerManager.clearMarkers();
										GMarkerManager.addMarkers(arMarkersToMap, 5);
										GMarkerManager.refresh();
									} else {
										GMarkerManager.clearMarkers();
									}
								}
							);
							//Reverse Geocoding durchfÃ¼hren
							ReverseGeocoder(draggableMarker.getLatLng());
							//infofenster Ã¶ffnen
							draggableMarker.openInfoWindowTabsHtml(arTabs)
						}
					);
					GEvent.addListener(draggableMarker, 'remove', function()
						{
							//wenn der marker entfernt wird!
							//daten lÃ¶schen, alles zurÃ¼cksetzen
							draggableMarker.closeInfoWindow();
							CONST_WinNode.style.display = 'none';
							setStandardVars();
							bRefreshEnabled = true;
							refresh_view();
						}
					);
					GEvent.addListener(draggableMarker, 'click', function()
						{
							//beim anklicken
							draggableMarker.openInfoWindowTabsHtml(arTabs);
						}
					);

					GMarkerManager.clearMarkers();
					GMap.addOverlay(draggableMarker);
					bDraggableMarkerEnabled = true;
					bRefreshEnabled = false;

					buildTabArray(false, false);
					draggableMarker.openInfoWindowTabsHtml(arTabs);
				} else {
					//nicht eingelogt
					showError('err', 'LoginErr1');
				}
			}
		);
	}
}

/**
* Bricht den eintragevorgang ab und entfernt alle daten
* @access public
* @return void
**/
function popDraggableMarker()
{
	GMap.removeOverlay(draggableMarker);
}

/**
* erstellt die tabs fÃ¼rs infofenster
* @access public
* @return false
**/
function buildTabArray(inc, re)
{
	var win;
	//wenn inc true ist wird der eingabe schritt um eins erhÃ¶ht
	if(inc)
		iInputStep ++;
	//array neu schreiben
	arTabs = new Array();
	html = "";
	saveFormDataInArray();

	//Erster Schritt: Typeingabe
	if(iInputStep >= 1)
	{
				var arSelectedOption = new Array(16);
		for(i=0;i<16;i++)
		{
			if(arInputData[1] == i)
				arSelectedOption[i] = " selected";
			else
				arSelectedOption[i] = "";
		}
		var isHidden = 'hidden';
				if(arInputData[0] == '4') isHidden = 'visible';
		if(arInputData[0] == '6') isHidden = 'visible';
		if(arInputData[0] == '12') isHidden = 'visible';
		html =  "<div style='width:355px;height:185px;' class='newEntry'>";
		html += "<p style='float:left;font-size:3.4em;margin-right:7px;color:#098DCE;font-family:Arial,sans-serif;font-weight:bold;'>1</p>";
		html += "<p>W&auml;hlen Sie bitte zun&auml;chst den Technik-Typ des <br /> einzutragenden Objekts aus der folgenden Liste aus:</p>";
		html += "<select id='typ' size='5' style='width:100%;clear:all;' onchange='sonstigerTyp()'>";
				html += "<optgroup label='Festnetztechnik'>"
		html += "<option value='1'"+arSelectedOption[0]+">&nbsp;- Kabelverzweiger</option>"
		html += "<option value='2'"+arSelectedOption[1]+">&nbsp;- Outdoor-DSLAM</option>"
		html += "<option value='3'"+arSelectedOption[2]+">&nbsp;- Vermittlungsstelle</option>"
		html += "<option value='4'"+arSelectedOption[3]+">&nbsp;- Sonstige</option>"
		html += "<optgroup label='Kabel-TV-Technik'>"
		html += "<option value='5'"+arSelectedOption[4]+">&nbsp;- Splitter/Abzweiger</option>"
		html += "<option value='6'"+arSelectedOption[5]+">&nbsp;- Sonstige</option>"
		html += "<option value='13'"+arSelectedOption[6]+">&nbsp;- Master-Kopfstation</option>"
		html += "<option value='14'"+arSelectedOption[7]+">&nbsp;- Kopfstation</option>"
		html += "<option value='15'"+arSelectedOption[8]+">&nbsp;- Hubs</option>"
		html += "<option value='16'"+arSelectedOption[9]+">&nbsp;- VerstÃ¤rker</option>"
		html += "<optgroup label='Funktechnik'>"
		html += "<option value='7'"+arSelectedOption[10]+">&nbsp;- UMTS</option>"
		html += "<option value='8'"+arSelectedOption[11]+">&nbsp;- GPRS/GSM</option>"
		html += "<option value='9'"+arSelectedOption[12]+">&nbsp;- WLAN/WiFi</option>"
		html += "<option value='10'"+arSelectedOption[13]+">&nbsp;- Vermittlungsstelle</option>"
		html += "<option value='11'"+arSelectedOption[14]+">&nbsp;- Richtfunk</option>"
		html += "<option value='12'"+arSelectedOption[15]+">&nbsp;- Sonstige</option>"
		html += "</optgroup>"
		html += "</select>";
		html += "<input type='text' style='visibility:"+isHidden+";width:98%;' id='sonstigerTyp123' value='"+arInputData[2]+"' onclick='if(this.value==\"Sonstige Technik\")this.value=\"\";' onblur='if(this.value==\"\")this.value=\"Sonstige Technik\";'>";
		if(iInputStep == 1)
		{
			html += "<div style='width:100%;text-align:center;'>";
			html += "<input type='button' class='button2' value='Weiter' onclick='if(checkIfNext()) buildTabArray(true, true);' />&nbsp;";
			html += "<input type='button' class='button2' value='Abbrechen' onclick='popDraggableMarker()' />";
			html += "</div>";
		}
		html += "</div>";
		arTabs.push(new GInfoWindowTab('Schritt 1', html));
	}

	//Zweiter Schritt: Addresse
	if(iInputStep >= 2)
	{
		var str = arInputData[3];
		var hnr = arInputData[4];
		var plz = arInputData[5];
		var ort = arInputData[6];
		var lat = arInputData[7];
		var lng = arInputData[8];
		html = "<div style='width:355px;height:185px;' class='newEntry'>";
		html += "<p style='float:left;font-size:3.4em;margin-right:7px;color:#098DCE;font-family:Arial,sans-serif;font-weight:bold;'>2</p>";
		html += "<p>Geben Sie nun bitte die Adresse des Objekts ein. AnschlieÃŸend wird der automatisch Marker platziert. Sie kÃ¶nnen die Position jedoch jederzeit per Drag&Drop &auml;ndern.</p>";
		html += "<div style='width:100%;margin-top:15px;clear:all;'>";
		html +=	"<input type='text' id='str' value='"+str+"' onkeyup='RunGeocoder()' onclick='if(this.value==\"Stra&szlig;e\")this.value=\"\";' onblur='if(this.value==\"\")this.value=\"Stra&szlig;e\";' />&nbsp;";
		html += "<input type='text' id='hnr' value='"+hnr+"' onkeyup='RunGeocoder()' onclick='if(this.value==\"Nr.\")this.value=\"\";' onblur='if(this.value==\"\")this.value=\"Nr.\";' /><br />";
		html += "<input type='text' id='plz' value='"+plz+"' onkeyup='RunGeocoder()' onclick='if(this.value==\"PLZ *\")this.value=\"\";' onblur='if(this.value==\"\")this.value=\"PLZ *\";' />&nbsp;";
		html += "<input type='text' id='ort' value='"+ort+"' onkeyup='RunGeocoder()' onclick='if(this.value==\"Ort *\")this.value=\"\";' onblur='if(this.value==\"\")this.value=\"Ort *\";' /><br /><br />";
		html += "<input type='text' id='lng' value='"+lng+"' readonly>&nbsp;";
		html += "<input type='text' id='lat' value='"+lat+"' readonly>";
		html += "</div>";
		if(iInputStep == 2)
		{
			html += "<div style='width:100%;text-align:center;'>";
			html += "<input type='button' class='button2' value='Weiter' onclick='if(checkIfNext()) buildTabArray(true, true);' />&nbsp;";
			html += "<input type='button' class='button2' value='Abbrechen' onclick='popDraggableMarker()' />";
			html += "</div>";
		}
		html += "</div>";
		arTabs.push(new GInfoWindowTab('Schritt 2', html));
		draggableMarker.enableDragging();
	}

	if(iInputStep >= 3)
	{
		html = "<div style='width:355px;height:185px;' class='newEntry'>";
		html += "<p style='float:left;font-size:3.4em;margin-right:4px;color:#098DCE;font-family:Arial,sans-serif;font-weight:bold;'>3</p>";
		html += "<p>Haben Sie noch zus&auml;tzliche Informationen zu dem Objekt? Dann tragen Sie diese bitte hier ein (BBCode erlaubt):</p>";
		html += "<div style='width:100%;margin-top:15px;position:relative;'>";
		html += "<a style='font-size:115%;border:1px solid "+CONST_borderCol+";padding:3px;margin-bottom:2px;' onclick='openProviderList()'> Provider wÃ¤hlen <img src='theme/arrow_down.gif'> </a>";
		html += "<p id='ProviderList' onmouseover='window.clearTimeout(ProviderListTimeout);' onmouseout='closeProviderList()'>"+writeProviderList()+"</p>";
		html += "<textarea id='erg' rows='2' cols='5'>"+arInputData[9]+"</textarea>";
		html += "</div>";
		if(iInputStep == 3)
		{
			html += "<div style='width:100%;text-align:center;'>";
			html += "<input type='button' class='button2' value='Zusammenfassung' onclick='if(checkIfNext()) buildTabArray(true,true)' />&nbsp;";
			if(bIsEdit)
				html += "<input type='button' class='button2' value='Speichern' onclick='submitNewEntry()' />&nbsp;";
			else
				html += "<input type='button' class='button2' value='Eintragen' onclick='submitNewEntry()' />&nbsp;";
			html += "<input type='button' class='button2' value='Abbrechen' onclick='popDraggableMarker()' />";
			html += "</div>";
		}
		html += "</div>";
		arTabs.push(new GInfoWindowTab('Schritt 3', html));
	}

	if(iInputStep >= 4)
	{
		var title = "";
		switch(parseInt(arInputData[0]))
		{
			case 1: title = "Festnetztechnik: Kabelverzweiger";break;
case 2: title = "Festnetztechnik: Outdoor-DSLAM";break;
case 3: title = "Festnetztechnik: Vermittlungsstelle";break;
case 4: title = "Festnetztechnik: Sonstige";break;
case 5: title = "Kabel-TV-Technik: Splitter/Abzweiger";break;
case 6: title = "Kabel-TV-Technik: Sonstige";break;
case 13: title = "Kabel-TV-Technik: Master-Kopfstation";break;
case 14: title = "Kabel-TV-Technik: Kopfstation";break;
case 15: title = "Kabel-TV-Technik: Hubs";break;
case 16: title = "Kabel-TV-Technik: Verstärker";break;
case 7: title = "Funktechnik: UMTS";break;
case 8: title = "Funktechnik: GPRS/GSM";break;
case 9: title = "Funktechnik: WLAN/WiFi";break;
case 10: title = "Funktechnik: Vermittlungsstelle";break;
case 11: title = "Funktechnik: Richtfunk";break;
case 12: title = "Funktechnik: Sonstige";break;
		}
		if(arInputData[3] == "StraÃŸe") str = ""; else str = arInputData[3];
		if(arInputData[4] == "Nr.") hnr = ""; else hnr = arInputData[4];
		html =  "<table id='info_buble'>";
		html += "<tr><td colspan='2' class='head'>"+title+"</td></tr>";
		html += "<tr><td>Eintragsnummer:</td><td><i> - </i></td></tr>";
		html += "<tr><td>Autor:</td><td>" 
		html += typeof( document.getElementById('username_span') != "undefined" ) ? document.getElementById('username_span').innerHTML : "Sie";
		html += "</td></tr>";
		html += "<tr valign='top'><td>Adresse:</td><td>"+str+" "+hnr+"<br />"+arInputData[5]+" "+arInputData[6]+"</td></tr>";
		html += "<tr valign='top'><td>Erg&auml;nzung:</td><td>"+arInputData[9]+"</td></tr>";
		html += "</table></td></tr></table>";
		if(iInputStep == 4)
		{
			html += "<div style='width:100%;text-align:center;'>";
			html += "<input type='button' class='button2' value='Aktualisieren' onclick='if(checkIfNext()) buildTabArray(false,true)' />&nbsp;";
			if(bIsEdit)
				html += "<input type='button' class='button2' value='Speichern' onclick='submitNewEntry()' />&nbsp;";
			else
				html += "<input type='button' class='button2' value='Eintragen' onclick='submitNewEntry()' />&nbsp;";
			html += "<input type='button' class='button2' value='Abbrechen' onclick='popDraggableMarker()' />";
			html += "</div>";
		}
		arTabs.push(new GInfoWindowTab('Schritt 4', html));
	}
	if(re)
	{
		GMap.updateInfoWindow(arTabs);
		if(iInputStep-1>0 && inc)
		{
			win = GMap.getInfoWindow();
			win.selectTab(iInputStep-1);
		}
	}
}

/**
* Ã¼berprÃ¼ft ob der nÃ¤chste schritt mÃ¶glich ist
* @access public
* @return bool
**/
function checkIfNext()
{
	var node;
	var noerr = true;

	if(iInputStep >= 1)
	{
		node = document.getElementById('typ');
		if(node)
		{
			if(node.selectedIndex < 0)
			{
				node.style.borderColor = CONST_errorCol;
				noerr = false;
			} else {
				node.style.borderColor = CONST_borderCol;
				var v = parseInt(node.options[node.selectedIndex].value);
				node = document.getElementById('sonstigerTyp123');
				var visible = false;
						if(v == 4) visible = true;		if(v == 6) visible = true;		if(v == 12) visible = true;				if(visible && node.value == "Sonstige Technik")
				{
					node.style.visibility = 'visible';
					node.style.borderColor = CONST_errorCol;
					noerr = false;
				} else {
					node.style.visibility = 'hidden';
					node.style.borderColor = CONST_borderCol;
				}
			}
		}
	}
	if(iInputStep >= 2)
	{
		node = document.getElementById('plz');
		if(node)
		{
			if(node.value == "PLZ *")
			{
				node.style.borderColor = CONST_errorCol;
				noerr = false;
			} else {
				node.style.borderColor = CONST_borderCol;
			}
			node = document.getElementById('ort');
			if(node.value == "Ort *")
			{
				node.style.borderColor = CONST_errorCol;
				noerr = false;
			} else {
				node.style.borderColor = CONST_borderCol;
			}
			node = document.getElementById('lat');
			if(node.value == "")
			{
				node.style.borderColor = CONST_errorCol;
				noerr = false;
			} else {
				node.style.borderColor = CONST_borderCol;
			}
			node = document.getElementById('lng');
			if(node.value == "")
			{
				node.style.borderColor = CONST_errorCol;
				noerr = false;
			} else {
				node.style.borderColor = CONST_borderCol;
			}
		}
	}
	return noerr;
}
/**
* speichert formulardaten
* @access public
* @return void
**/
function saveFormDataInArray()
{
	var node;
	var arInputIDs = new Array('typ','sonstigerTyp123','str','hnr','plz','ort','lat','lng','erg');
	var to = 0;

	for(i=0;i<arInputIDs.length;i++)
	{
		node = document.getElementById(arInputIDs[i])
		if(node)
		{
			if(node.nodeName == "SELECT")
			{
				if(node.selectedIndex > -1)
				{
					arInputData[to] = node.options[node.selectedIndex].value;
					to++;
					arInputData[to] = node.selectedIndex;
					to++;
				} else {
					arInputData[to] = false;
					to++;
					arInputData[to] = -1;
					to++;
				}
			} else if(node.nodeName == "INPUT") {
				arInputData[to] = node.value;
				to ++;
			} else if(node.nodeName == "TEXTAREA") {
				arInputData[to] = node.value;
				to++;
			}
		}
	}
	var aktP = draggableMarker.getLatLng();
	arInputData[7] = aktP.lat();
	arInputData[8] = aktP.lng();
	
	if(arProviderList.length > 0)
	{
		for(i=0;i<arProviderList.length;i++)
		{
			if(!document.getElementById('Provider_'+i)) break;
			if(document.getElementById('Provider_'+i).checked)
			{
				arInputData[to] = document.getElementById('Provider_'+i).value;
				to++;
			}
		}
	}
}
/**
* startet eine geocoder anfrage und seltzt den marker neu
* @access public
* @return void
**/
function Geocoder()
{
	saveFormDataInArray();
	var add = '',
	    plzIsSet = false,
	    ortIsSet = false;
	//plz ort, straÃŸe hnr
	if(arInputData[5] != 'PLZ *')
	{
		add += arInputData[5];	//plz hinzufÃ¼gen
		plzIsSet = true;
	}
	if(arInputData[6] != 'Ort *')
	{
		add += ' '+arInputData[6]; //ort hinzufÃ¼gen
		ortIsSet = true;
	}
	if(add.length != 0)
	{
		add += ', '				//falls noch nichts angegeben wurde wird nur straÃŸe und hausnummer Ã¼bergeben
	}
	if(arInputData[3] != 'StraÃŸe')
	{
		add += arInputData[3]	//straÃŸe angehÃ¤ngt
	}
	if(arInputData[4] != 'Nr.' && add.length != 0)	//nur hausnummer bringt nix! ^^
	{
		add += " "+arInputData[4];
	}
	if(add.length > 0 && ( plzIsSet || ortIsSet ) )
	{
		GGeocoder.getLatLng(add, function(point)
			{
				if(point != null && point.equals(draggableMarker.getLatLng()) == false)
				{
					//es gab einen punkt
					draggableMarker.closeInfoWindow();
					var zoom = (GMap.getZoom() < 11) ? 11 : GMap.getZoom();
					GMap.setCenter(point, zoom);
					draggableMarker.setLatLng(point);
					bUseReverseGeocoder = false;
					GEvent.trigger(draggableMarker,'dragend');
				}
			}
		);
	}
}
/**
* startet die wartesequenz fÃ¼r den geocoder
* @access public
* @return void
**/
function RunGeocoder()
{
	window.clearTimeout(Timeout);
	Timeout = window.setTimeout('Geocoder();', 1000);
}
/**
* Punkt => Addresse (entgegengesetztes Geocoding)
*@access public
*@return void
*/
function ReverseGeocoder(p)
{
	if(!bUseReverseGeocoder)
		return false;
	GGeocoder.getLocations(p, function(a)
		{
			if(a.Status.code == 200)
			{
				//request war erfolgreich!
				var place = new GPlacemark(a.Placemark[0]);
				if(place.Accuracy >= 4)
				{
					//alert('geocoder');
					var node;
					if(place.LocalityName)
					{
						arInputData[6] = place.LocalityName;
						if(place.DependentLocalityName)
							arInputData[6] = place.LocalityName+'/'+place.DependentLocalityName;
					} else {
						arInputData[6] = "Ort *";
					}
					node = document.getElementById('ort');
					if(node)
						node.value = arInputData[6];
					if(place.PostalCodeNumber)
					{
						arInputData[5] = place.PostalCodeNumber;
					} else {
						arInputData[5] = "PLZ *";
					}
					node = document.getElementById('plz');
					if(node)
						node.value = arInputData[5];
					if(place.ThoroughfareName)
					{
						var streat = place.ThoroughfareName;
						if(place.Accuracy >= 7)
						{
							//Hausnummer erhalten!
							streat = streat.replace(/(\d+-\d+)$/, '');
							var erg = streat.match(/(\d+$|\d+[a-z]$)/);
							if(erg)
							{
								arInputData[4] = erg[1];
							} else {
								arInputData[4] = "Nr.";
							}
							streat = streat.replace(/(\d+$|\d+[a-z]$)/, '');
						} else {
							arInputData[4] = "Nr.";
						}
						arInputData[3] = streat;
					} else {
						arInputData[3] = "StraÃŸe";
					}
					node = document.getElementById('str');
					if(node)
						node.value = arInputData[3];
					node = document.getElementById('hnr');
					if(node)
						node.value = arInputData[4];
				}
			}
			if(document.getElementById('lat'))
			{
				document.getElementById('lat').value = p.lat();
				document.getElementById('lng').value = p.lng();
			}
		}
	);
}
/**
* Ã¼bertrÃ¤gt eingetragene daten
* @access public
* @return void
**/
function submitNewEntry()
{
	if(bIsLoading == false && checkIfNext() == true)
	{
		draggableMarker.disableDragging();
		saveFormDataInArray();
		bIsLoading = true;
		id = 0;
		if(bIsEdit)
			id = iEditId;
		ajax.request('newEntry.php?id='+id, 'post', arInputData, function(result)
			{
				if(result != '1')
				{
					var arResult = result.split(':');
					if(arResult[0] == 'err')
					{
						if(arResult[1] == 'bLoginError')
						{
							popDraggableMarker();
							showError('err', 'LoginErr1');
						} else if(arResult[1] == 'bDataError') {
							//UnvollstÃ¤ndige Dateneingabe
							showError('err', 'DataErr1');
						} else if(arResult[1] == 'bDBError') {
							//Datenbankfehler
							showError('err', 'DBErr1');
							if(DBError > 0) alert(arResult[2]);
							DBError ++;
						}
					} else {
						alert('Es ist ein unbekannter Fehler aufgetreten');
					}
				} else {
					if(bIsEdit)
					{
						showError('done', 'EditDone');
						arLoadedMarkerInfos[iEditId] = false;
					}
					else
						showError('done', 'NewDone');
					Timeout = setTimeout('popDraggableMarker()', 7050);
					DBError = 0;
				}
				bIsLoading = false;
				draggableMarker.enableDragging();
			}
		);
	}
}
/**
* zeigt ein zusÃ¤tzliches Textfeld fÃ¼r sonstige Typen an
* @access public
* @return void
**/
var arProviderList = new Array();
function sonstigerTyp()
{
	var node = document.getElementById('typ');
	if(node && node.selectedIndex > -1)
	{
		var v = parseInt(node.options[node.selectedIndex].value);
		var visible = false;
				if(v == 4) visible = true;		if(v == 6) visible = true;		if(v == 12) visible = true;		if(visible)
		{
			document.getElementById('sonstigerTyp123').style.visibility = 'visible';
		} else {
			document.getElementById('sonstigerTyp123').style.visibility = 'hidden';
		}
		loadProviderList();
	}
}
/**
* Ã¶ffnet die providerliste in der eingabemaske
*
*
**/
function openProviderList()
{
	if(arProviderList.length == 0) loadProviderList();
	if(iInputStep >= 3)
	{
		var node = document.getElementById('ProviderList');	
		node.innerHTML = writeProviderList();
		node.style.display = 'block';
	}
}
/**
* schreibt die providerliste
*
* @return string
**/
function writeProviderList()
{
	var r = "";
	for(i=0;i<arProviderList.length;i++)
	{
		add = "";
		if(arInputData.find(arProviderList[i][0],10))	add = ' checked';
		r += "<span><input type='checkbox' value='"+arProviderList[i][0]+"' id='Provider_"+i+"'"+add+">"+arProviderList[i][1]+"</span>";
	}
	return r;
}
/**
* schlieÃŸt die providerliste
*
*
**/
function closeProviderList()
{
	ProviderListTimeout = window.setTimeout("saveFormDataInArray();document.getElementById('ProviderList').style.display = 'none';", 500);
}
/**
* lÃ¤dt die providerliste
*
*
**/
function loadProviderList()
{
	var node = document.getElementById('typ');
	if(node && node.selectedIndex > -1)
	{
		var v = parseInt(node.options[node.selectedIndex].value);
		ajax.request('getProviderList.php?t='+v, 'get', new Array(), function(result)
			{
				arProviderList = new Array();
				arInputData.splice(10,arInputData.length-10);
				var ar = result.split(';');
				var pro = new Array();
				for(i=0;i<ar.length;i++)
				{
					pro = ar[i].split(',');
					arProviderList.push(pro);
				}
			}
		);
	}
}
/*
* Suchen in einem 2D-Array (rekursiv)
*/
Array.prototype.find = function()
{
	if(!arguments[0]) return false;
	var s = arguments[0];
	var i = 0;
	if(arguments[1]) i = arguments[1];
	if(this[i])
	{
		if(this[i] == s) return i;
		i++;
		return this.find(s,i);
	} else return false
}

