var xmlHttp;

function addProduct(productID) 
{
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=1&what=1&ID=";
	url = url + productID;
	url = url + "&count=1";
	url = url + "&sid=" + Math.random();
	xmlHttp.onreadystatechange = productChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function reduceProduct(productID)
{
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	
	nameInputBox = "pCount" + productID;
	
	if(document.getElementById(nameInputBox).value > 1)
	{
		var url = "index.php?ajax=1&what=2&ID=";
		url = url + productID;
		url = url + "&count=1";
		url = url + "&sid=" + Math.random();
		xmlHttp.onreadystatechange = productChanged;
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
	}
}

function removeProduct(productID)
{
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=1&what=3&ID=";
	url = url + productID;
	url = url + "&sid=" + Math.random();
	xmlHttp.onreadystatechange = productRemoved;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}


function submitBillDescription(description)
{	
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=4&what=1&description="+description;
	url = url + "&sid=" + Math.random();
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function submitBillPaymentPeriod(period)
{
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=4&what=2&paymentPeriod="+period;
	url = url + "&sid=" + Math.random();
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function submitBillMWST(mwst)
{	
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=4&what=3&mwst="+mwst;
	url = url + "&sid=" + Math.random();
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function liveSearch(searchString)
{
	if(searchString != "")
	{
		xmlHttp = GetXmlHttpObject();
		if (xmlHttp == null) 
		{
			alert("Browser does not support HTTP Request");
			return;
		}
		
		var url = "index.php?ajax=5&searchString="+ escape(searchString);
		url = url + "&sid=" + Math.random();
		xmlHttp.onreadystatechange = liveSearchResult;
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
	}
	else
	{
		var liveSearchResultDiv = document.getElementById("liveSearchResult");
		liveSearchResultDiv.innerHTML = "";
		liveSearchResultDiv.style.border="0px solid #A5ACB2";
	}
}


function setProductCount(productID,newValue)
{
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	
	
	if(newValue <= 0)
	{
		alert("bitte keine negativen Werte oder 0 eintragen");
		newValue = 1;
	}

	
	var url = "index.php?ajax=1&what=4&ID=";
	url = url + productID;
	url = url + "&count=";
	url = url + newValue;
	url = url + "&sid=" + Math.random();
//	alert(url);
	xmlHttp.onreadystatechange = productChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function expandMenu(categoryID)
{	
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=2&ID=";
	url = url + categoryID;
	url = url + "&sid=" + Math.random();
	xmlHttp.onreadystatechange = menuChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function reduceMenu(ID)
{	
	//Den Webserver informieren, dass dieser Menüpunkt reduziert wurde
	xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) 
	{
		alert("Browser does not support HTTP Request");
		return;
	}
	var url = "index.php?ajax=3&ID=";
	url = url + ID;
	url = url + "&sid=" + Math.random();
	xmlHttp.onreadystatechange = null;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
	
	
	var p1 = document.getElementById("menuLi"+ID);
	//Item 2 stellt den Link in der Liste dar
	var fChild = p1.getElementsByTagName("a")[0];
	
	//Item 3 beinhaltet die Unterliste
	p1.removeChild(p1.getElementsByTagName("ul")[0]);
	//dem Link wird wieder die "expandMenu" Funktion mit der aktuellen ID hinzugefügt.		
	fChild.onclick = function()
	{
		expandMenu(ID);
	};
}

function menuChanged()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
	{
		//alert(xmlHttp.responseText);
		var xmlDoc = xmlHttp.responseXML.documentElement;	
		
		//Nun den zu verändernden inner-HTML (des LI-Objekts) suchen und anpassen
		var liName = "menuLi"+xmlDoc.getElementsByTagName("TopID")[0].firstChild.nodeValue;
		var htmlToChange = document.getElementById(liName).innerHTML;
		
		//categories-Tag im XML-Dokument suchen (hier drin sind die Kategorie-Informationen)
		var categories = xmlDoc.getElementsByTagName("Categories")[0];

		
		htmlToChange = htmlToChange + "<ul>";
		
		for(var i = 0;i < categories.childNodes.length; i++)
		{
			htmlToChange = htmlToChange + "<li><a href=\"index.php?action=1&category="+categories.childNodes[i].childNodes[0].firstChild.nodeValue+"\">"+
			categories.childNodes[i].childNodes[1].firstChild.nodeValue+"</a></li>";
		}
		
		htmlToChange = htmlToChange + "</ul>";
		document.getElementById(liName).innerHTML = htmlToChange;
		
		//neue onClick-Funktion setzen um das Untermenü des expandierten Menüpunktes löschen
		var linkName = "menu"+xmlDoc.getElementsByTagName("TopID")[0].firstChild.nodeValue;
		document.getElementById(linkName).onclick = function()
		{
			reduceMenu(xmlDoc.getElementsByTagName("TopID")[0].firstChild.nodeValue);
		}; 
	}
}

function liveSearchResult()
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
	{
		var xmlDoc = xmlHttp.responseXML.documentElement;
		var searchResultOverview = xmlDoc.getElementsByTagName("SearchResult")[0];
		
		var liveSearchDiv = document.getElementById("liveSearchResult");
		var htmlToChange = "";
		
		for (var i = 0;i< xmlDoc.childNodes.length; i++)
		{
			htmlToChange += "<p><a href=\"index.php?action=16&searchField="+ xmlDoc.childNodes[i].firstChild.nodeValue +"\">"+xmlDoc.childNodes[i].firstChild.nodeValue+" </a></p>";
		}
		
		liveSearchDiv.innerHTML = htmlToChange;
		liveSearchDiv.style.border="1px solid #A5ACB2";
	}
}

function productChanged() 
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
	{
		//alert(xmlHttp.responseText);
		var xmlDoc = xmlHttp.responseXML.documentElement;
		
		var nameInputBox = "pCount" + xmlDoc.getElementsByTagName("ID")[0].firstChild.nodeValue;
		var divName = "div" + xmlDoc.getElementsByTagName("ID")[0].firstChild.nodeValue;
		
		//Neue Anzahl einfügen
		document.getElementById(nameInputBox).value =
			xmlDoc.getElementsByTagName("NewCount")[0].firstChild.nodeValue;
		
		//Neuer Betrag einfügen
		var t1 = document.getElementById(divName).getElementsByTagName("table")[0];
		t1.getElementsByTagName("td")[3].innerHTML = xmlDoc.getElementsByTagName("NewPrice")[0].firstChild.nodeValue;
		
		//Gesamtbetrag anpassen
		var fullPriceDiv = document.getElementById("fullPriceDiv");
		fullPriceDiv.innerHTML = "Aktueller Gesamtpreis: <b>"+xmlDoc.getElementsByTagName("FullPrice")[0].firstChild.nodeValue+"Fr.</b>";
		
	}
}

function productRemoved() 
{
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") 
	{
		var xmlDoc = xmlHttp.responseXML.documentElement;
		
		var divID = "div" + xmlDoc.getElementsByTagName("ID")[0].firstChild.nodeValue;
		
		document.getElementById(divID).innerHTML = "";
		
		//Gesamtbetrag anpassen
		var fullPriceDiv = document.getElementById("fullPriceDiv");
		fullPriceDiv.innerHTML = "Aktueller Gesamtpreis: <b>"+xmlDoc.getElementsByTagName("FullPrice")[0].firstChild.nodeValue+"Fr.</b>";
	}
}

function GetXmlHttpObject() 
{
	var objXMLHttp = null;
	if (window.XMLHttpRequest) 
	{
		objXMLHttp = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) 
	{
		objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objXMLHttp;
}

function AddText(myText) 
{	
		//fügt einene Text (in unserem Fall eine Formatierung) hinzu.
		//alert(document.getElementById("theDescriptionID"));
		document.getElementById("theDescriptionID").value = document.getElementById("theDescriptionID").value + myText;
}

function CheckAllValues()
{
	if(document.getElementById('catID').value != "")
	{
		return true;
	}
	else 
	{
		alert("Sie müssen einen Wert eingeben");
		return false;
	}
}

function CheckReminderRename()
{
	if(document.getElementById('idNewName').value != "")
	{
		return true;
	}
	else 
	{
		alert("Sie müssen einen Wert eingeben");
		return false;
	}
}

function CheckOrderSpecials()
{
	if(document.getElementById('newText').value != "" && document.getElementById('newPrice').value != "" && IsNumeric(document.getElementById('newPrice').value))
	{
		return true;
	}
	else
	{
		alert("Bitte alle und gültige Werte eintragen!");
		return false;
	}	
}

function CheckNews()
{
	var date1String = document.getElementById('StartDate').value;
	var date2String = document.getElementById('EndDate').value;
	
	if(date1String != "" && date2String != "" )
	{
		var date1 = new Date(date1String.substring(7,11), date1String.substring(4,6), date1String.substring(0,2), 0, 0, 0);
		var date2 = new Date(date2String.substring(7,11), date2String.substring(4,6), date2String.substring(0,2), 0, 0, 0);
		
		if(date2.getTime() <= date1.getTime())
		{
			alert("Enddatum muss nach dem Startdatum liegen!");
			return false;
		}
		else
		{
			return true;
		}
	}
	else	
	{
		alert('Bitte Datumsbereiche eintragen');
		return false;
	}

}

function NumericEmpty(textBoxName)
{
	if(document.getElementById(textBoxName).value != "" && IsNumeric(document.getElementById(textBoxName).value))
	{
		return true;
	}
	else
	{
		alert("Bitte gültiger Wert eintragen!");
		return false;
	}	
}

function CheckLength(textBoxName,maxLength)
{
	textValue = document.getElementById(textBoxName).value;
	if(textValue.length > maxLength)
	{
		alert("Text darf maximal "+maxLength+" Zeichen lang sein! Text wurde auf 500 Zeichen gekürzt");
		document.getElementById(textBoxName).value = textValue.substring(0,maxLength);
	}
	
}


function IsNumeric(sText)
{
   var ValidChars = "-0123456789.";
   var IsNumber=true;
   var Char;

 
   for (var i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";	
	
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	
	return "";
}

function CheckDeliveryDate(dateName,hourName)
{
	//Die Funktion muss nur ausgeführt werden, wenn nicht "am nächsten Tag" ausgewählt wurde
	if(getCheckedValue(document.getElementsByName('deliveryDate')) != 1)
	{
		var datePart = document.getElementById(dateName).value;
		var hourPart = document.getElementById(hourName).value;
		
		
		if(datePart != "" && hourPart != "")
		{
			if(!IsNumeric(hourPart) || hourPart < 0 || hourPart > 23)
			{
				alert("Die eingetragene Uhrzeit hat nicht das richtige Format!");
				return false;
			}
			
			var dArr = datePart.split(".");
		
			var d = new Date(dArr[1] + "/" + dArr[0] + "/" + dArr[2]);
			var myVal = d.getMonth() + 1 == dArr[1] && d.getDate() == dArr[0] && d.getFullYear() == dArr[2];
			
			if(!myVal)
			{
				alert("Das eingetragene Datum hat nicht das richtige Format!");
				return false;
			}
			else
			{
				return true;
			}
		}
		else
		{
			alert("Geben Sie bitte Datum und Uhrzeit ein");
			return false;
		}
	}
	else
	{
		return true;
	}
}

function disableDeliveryDate(val)
{
	document.getElementById('deliveryHourPart').disabled = val;
	document.getElementById('deliveryDatePart').disabled = val;
}

