function getElementsByClassName(findClass, obj)
{
	var aElm=obj.getElementsByTagName('*');
	var arr = new Array();
	var count = 0;
	for(var i = 0; i < aElm.length; i++) {
		if(aElm[i].className==findClass) {
			arr[count++] = aElm[i];
		}
	}
	return arr;
}

function hideElements(obj)
{
	obj.css("visibility", "hidden");
	obj.css("position", "absolute");
}

function showElements(obj)
{
	obj.css("visibility", "visible");
	obj.css("position", "static");
}

function deleteConvert0rder(order_id, agreed)
{
	if(agreed)
	{
		$.post("ajaxAdmin.php", { type: "deleteConvertOrder", order_id: order_id },
			function(xmlstring){
				var s = xmlstring.split("_");
				if(s[0] == "deleteConvertOrderOk")
				{
					var node = document.getElementById("orders_" + order_id);
					node.parentNode.removeChild(node);
				}
			}
		);
	}
	else
	{
		deleteConvertOrder = order_id;
		document.getElementById("message_box").style.visibility = "visible";
		$('#message_box').animate({ opacity:100 }, "slow");
	}
}
	
function ToggleEameArticleState(_id, _eame, agreed)
{
	if(agreed)
	{
		$.post("ajaxAdmin.php", { type: "toggleEameArticleState", id: _id, eame: _eame },
			function(xmlstring){
				var s = xmlstring.split("_");
				if(s[0] == "toggleEameArticleStateOk")
				{
					var node_img = document.getElementById("img_" + s[1] + "_" + s[2]);
					if(s[3] == "1")
					{
						node_img.src = "../images/icons/accept.png";
					}
					else
					{
						node_img.src = "../images/icons/delete.png";
					}
				}
			}
		);
	}
	else
	{
		id = _id;
		eame = _eame;
		
		document.getElementById("message_box").style.visibility = "visible";
		$('#message_box').animate({ opacity:100 }, "slow");
	}
}

function DeleteDeliveryWeek(wk, agreed)
{
	if(agreed)
	{
		$.post("ajaxAdmin.php", { type: "deleteDeliveryWeek", week: wk },
			function(xmlstring){
				var s = xmlstring.split("_");
				if(s[0] == "deleteDeliveryWeekOk")
				{
					var node = document.getElementById("row_week_" + s[1]);
					node.parentNode.removeChild(node);
				}
			}
		);
	}
	else
	{
		deleteWeek = wk;
		document.getElementById("message_box").style.visibility = "visible";
		$('#message_box').animate({ opacity:100 }, "slow");
	}
}

function DeleteNewUser(id, agreed)
{
	if(agreed)
	{
		$.post("ajaxAdmin.php", { type: "DeleteNewUser", id: id },
			function(xmlstring){
				var s = xmlstring.split("_");
				var klant_id = xmlstring.substring(16, xmlstring.length);
				if(s[0] == "DeleteNewUserOk")
				{
					$("#newUser_" + klant_id).remove();
				}
			}
		);
	}
	else
	{
		deleteUserID = id;
		document.getElementById("message_box").style.visibility = "visible";
		$('#message_box').animate({ opacity:100 }, "slow");
	}
}

function DeleteSurplusWeek(week, agreed)
{
	if(agreed)
	{
		$.post("ajaxAdmin.php", { type: "deleteSurplusWeek", week: week },
			function(xmlstring){
				var s = xmlstring.split("_");
				if(s[0] == "deleteSurplusWeekOk")
				{
					var node = document.getElementById("row_week_" + s[1]);
					node.parentNode.removeChild(node);
				}
			}
		);
	}
	else
	{
		deleteWeek = week;
		document.getElementById("message_box").style.visibility = "visible";
		$('#message_box').animate({ opacity:100 }, "slow");
	}
}


function order_arrow(arrow_element)
{
	var key = arrow_element.id.split('_');
	var week = key[1];
	var product_id = key[2];
	var vr_id = "vr_" + key[1] + "_" + key[2];
	var input_id = "input_" + key[1] + "_" + key[2];
	
	vr_element = $("#" + vr_id);
	var vr = parseInt(vr_element.text());
	var input_element = $('#' + input_id);
	
	if(input_element.val() == "")
	{
		vr_element.text(parseInt(vr_element.text()) - 1);
		input_element.val(1);
	}
	else if(vr > 0)
	{
		vr_element.text(parseInt(vr_element.text()) - 1);
		input_element.val(parseInt(input_element.val()) + 1);
	}
	else
	{
		return;
	}
}

function orderFromInputEvent(inputElement)
{
	var key = inputElement.id.split('_');
	var week = key[1];
	var product_id = key[2];
	var amount = inputElement.value;

	if(!isNaN(amount) || amount == "")
	{
		order(week, product_id, amount);
	}
}

function order(week, product_id, amount)
{
	if(isNaN(amount) && amount != "")
		return;

	$.post(basedir + "ajaxOrder.php", { type: "order", week: week, id: product_id, amount: amount },
		function(xmlstring){
			GenerateOrderTable(xmlstring);
		}
	);
}

function filterOrder()
{
	$.post(basedir + "ajaxOrder.php", { type: "getOrderXml" },
		function(xmlstring){
			if(!boolFilterOrder){
				boolFilterOrder = true;
				filterOrderTable(xmlstring);
			}else{
				boolFilterOrder = false;
				$(".orderRowShow").removeClass();
				$(".orderRowShow").addClass("orderRow");
				$(".catShow").removeClass();
				$(".catShow").addClass("cat");
				
				$(".cat").show();
				$(".orderRow").show();
			}
		}
	);
}

function DeleteOrder(week, product_id)
{
	$.post(basedir + "ajaxOrder.php", { type: "deleteOrder", week: week, id: product_id },
		function(xmlstring){
			GenerateOrderTable(xmlstring);
		}
	);
}

function EditOrder(week, id)
{
	alert(week);
}

function GerenrateTable()
{
	$.post(basedir + "ajaxOrder.php", { type: "getOrderXml" },
		function(xmlstring){
			GenerateOrderTable(xmlstring);
		}
	);
	$.post(basedir + "ajaxOrder.php", { type: "getUser" },
		function(xmlstring){	
			ShowUser(xmlstring);
		}
	);
}

function filterOrderTable(xmlstring)
{	
	if(xmlstring == "not_logged_in")
		return;
	
	try //Internet Explorer
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlstring);
	}  
	catch(e)
	{
		try // Firefox, Mozilla, Opera, etc.
		{
			parser = new DOMParser();
			xmlDoc = parser.parseFromString(xmlstring,"text/xml");
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
	
	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	var children = xmlDoc.getElementsByTagName("orders")[0].childNodes;
	var cats = new Array();
	var catsIndex = 0;
	
	for(var i = 0; i < children.length; i++)
	{
		if((children[i].nodeType != 3) && (children[i].nodeType != 8))
		{
			switch(children[i].nodeName)
			{
				case "order":
					var ok, product_id, id, amount, week, voorraad, plantsTray, cat;
					
					for (var j = 0; j < children[i].childNodes.length; j++)
					{
						// not a text or comment node 
						if ( (children[i].childNodes[j].nodeType != 3) && (children[i].childNodes[j].nodeType != 8) )
						{
							switch(children[i].childNodes[j].nodeName)
							{
								case "ok":
									ok = children[i].childNodes[j].getAttribute("value");								
									break;
								case "voorraad":
									voorraad = children[i].childNodes[j].getAttribute("value");
									break;
								case "week":
									week = children[i].childNodes[j].getAttribute("value");
									break;
								case "product_id":
									product_id = children[i].childNodes[j].getAttribute("value");
									break;
								case "id":
									id = children[i].childNodes[j].getAttribute("value");
									break;
								case "amount":
									amount = children[i].childNodes[j].getAttribute("value");
									break;
								case "plantsTray":
									plantsTray = children[i].childNodes[j].getAttribute("value");
									break;
								case "cat":
									cat = children[i].childNodes[j].getAttribute("value");
									if(!ValueExists(cats, week) && ok > 0)
									{
										cats[catsIndex++] = "#cat_" + cat.replace(" ", "_");
									}
									break;
							}
						}
					}
					
					if(sPage == "surplus.php" && ok > -3)
					{
						var row_id = '#productRow_' + product_id;
						$(row_id).removeClass();
						$(row_id).addClass("orderRowShow");
					}
					break;
			}
		}
	}
	
	for(var i = 0; i < cats.length; i++)
	{
		$(cats[i]).removeClass();
		$(cats[i]).addClass("catShow");
	}
	
	$('.cat').hide();
	$('.orderRow').hide();
}

function ShowUser(xmlstring)
{
	$('#forUserDiv').hide();
	
	if(xmlstring == "noID")
		return;
	
	if(xmlstring == "not_logged_in")
		return;
	
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlstring);
	}  
	catch(e)
	{
		try // Firefox, Mozilla, Opera, etc.
		{
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(xmlstring,"text/xml");
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
	
	var children = xmlDoc.getElementsByTagName("user")[0].childNodes;
	var klant_id, companyName;
	
	for (var i = 0; i < children.length; i++)
	{ 
		if ( (children[i].nodeType != 3) && (children[i].nodeType != 8) )
		{
			switch(children[i].nodeName)
			{
				case "klant_id":
					klant_id = children[i].getAttribute("value");
					/*
					var id =children[i].getAttribute("value");
					AddUserRow(children[i].getAttribute("name"), id);
					var removeForUser = document.getElementById("remove_forUser");
					removeForUser.setAttribute("OnClick", 'Remove_forUser("' + id + '")');
					*/
					break;
				case "companyName":
					companyName = children[i].getAttribute("value");
					//AddUserRow(children[i].getAttribute("name"), children[i].getAttribute("value"));
					break;
				case "contactName":
					//AddUserRow(children[i].getAttribute("name"), children[i].getAttribute("value"));
					break;
			}
		}
	}
	
	$('#sidebox_klant_id').text(klant_id);
	$('#sidebox_companyName').text(companyName);
	
	if(children.length > 1)
	{
		$('#forUserDiv').slideDown('slow');
	}
	else
	{
		$('#forUserDiv').slideUp('slow');
	}
}

/*
function AddUserRow(beschr, value)
{
	
	var tbl = document.getElementById('userTableTbody');
	var iteration = tbl.rows.length
	var row = tbl.insertRow(iteration);

	var cell = row.insertCell(0);
	var textNode = document.createTextNode(beschr);
	cell.appendChild(textNode);

	var cell = row.insertCell(1);
	var textNode = document.createTextNode(value);
	cell.appendChild(textNode);
}*/

function GenerateOrderTable(xmlstring)
{
	if(xmlstring == "not_logged_in")
		return;
	
	$('.order_count').text("0");
	$('.orderListTBocye').children().remove();
	$('.orderListTableVisible').hide();
	$('.orderList').hide();
	
	try //Internet Explorer
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlstring);
	}  
	catch(e)
	{
		try // Firefox, Mozilla, Opera, etc.
		{
			parser = new DOMParser();
			xmlDoc = parser.parseFromString(xmlstring,"text/xml");
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
	
	
	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	var children = xmlDoc.getElementsByTagName("orders")[0].childNodes;
	var orderListsVisible = new Array();
	var orderListsIndex = 0;
	var allOk = true;
	
	for (var i = 0; i < children.length; i++)
	{
		if ( (children[i].nodeType != 3) && (children[i].nodeType != 8) )
		{
			switch(children[i].nodeName)
			{
				case "order":
					var ok, product_id, id, amount, week, voorraad, plantsTray;
					
					for (var j = 0; j < children[i].childNodes.length; j++)
					{
						// not a text or comment node 
						if ( (children[i].childNodes[j].nodeType != 3) && (children[i].childNodes[j].nodeType != 8) )
						{
							switch(children[i].childNodes[j].nodeName)
							{
								case "ok":
									ok = children[i].childNodes[j].getAttribute("value");								
									break;
								case "voorraad":
									voorraad = children[i].childNodes[j].getAttribute("value");
									break;
								case "week":
									week = children[i].childNodes[j].getAttribute("value");
									if(!ValueExists(orderListsVisible, week) && ok > 0)
									{
										orderListsVisible[orderListsIndex++] = "orderList_" + week;
									}
									break;
								case "product_id":
									product_id = children[i].childNodes[j].getAttribute("value");
									break;
								case "id":
									id = children[i].childNodes[j].getAttribute("value");
									break;
								case "amount":
									amount = children[i].childNodes[j].getAttribute("value");
									break;
								case "plantsTray":
									plantsTray = children[i].childNodes[j].getAttribute("value");
									break;
							}
						}
					}
					
					if(sPage == "surplus.php")
					{
						var week_id = week + "_" + product_id;
						if(ok > 0) //order OK
						{
							addOrderRow(week, product_id, id, amount, plantsTray);
							SetInputOrderOK(week_id, amount, voorraad);
						}
						else if(ok == 0) //error: amount > voorraad
						{
							SetInputError(week_id, amount, voorraad);
							allOk = false;
						}
						else if(ok == -1) //error: amount <= 0
						{
							if(amount < 0)
							{
								SetInputError(week_id, amount, voorraad);
								allOk = false;
							}
							else
							{
								SetInputDefault(week_id, amount, voorraad);
							}
						}
						else if(ok == -2) //error: amount == ""
						{
							SetInputDefault(week_id, amount, voorraad);
						}
						else if(ok == -3) //error: amount == "[deleted]"
						{
							SetInputDefault(week_id, amount, voorraad);
						}
					}
					else
					{
						if(ok > 0)
							addOrderRow(week, product_id, id, amount, plantsTray);
					}
					break;
			}
		}
	}
	
	if(allOk)
	{
		hideElements($('#error_gvr'));
	}
	else
	{
		showElements($('#error_gvr'));
	}
	for(var i = 0; i < orderListsVisible.length; i++)
	{
		$('#' + orderListsVisible[i]).show();
	}
}

function SetInputError(week_id, amount, voorraad)
{
	try
	{
		var span_vr = document.getElementById("vr_" + week_id);
		span_vr.innerHTML = voorraad;
		span_vr.style.fontWeight = "";
		
		var input = document.getElementById("input_" + week_id);
		input.value = amount;
		input.style.border = "solid 1px #F7AB4D";
		input.style.backgroundColor = "#FDEEDB";
		input.style.color = "#F7AB4D";
	}
	catch(e)
	{
		//alert(e.message);
	}
    
}

function SetInputDefault(week_id, amount, voorraad)
{
	try
	{
		var span_vr = document.getElementById("vr_" + week_id);
		span_vr.innerHTML = voorraad;
		span_vr.style.fontWeight = "";
		
		var input = document.getElementById("input_" + week_id);
		input.value = "";
		input.style.border = "";
		input.style.backgroundColor = "";
		input.style.color = "#666666";
	}
	catch(e)
	{	
		//alert(e.message);
	}
    
}

function SetInputOrderOK(week_id, amount, voorraad)
{
	try
	{
		var span_vr = document.getElementById("vr_" + week_id);
		var new_vr = voorraad - amount;
		if(new_vr >= 0)
		{
			span_vr.innerHTML = new_vr;
			span_vr.style.fontWeight = "bold";
		}
		
		var input = document.getElementById("input_" + week_id);
		input.value = amount;
		input.style.border = "solid 1px #66FF66";
		input.style.backgroundColor = "#ccffcc";
		input.style.color = "#666666";
	}
	catch(e)
	{	
		//alert(e.message);
	}
    
}

function ValueExists(arr, value)
{
	for(var i = 0; i < arr.length; i++)
	{
		if(arr[i] == value)
		{
			return true;
		}
	}
	return false;
}

function addOrderRow(week, product_id, id, amount, plantsTray)
{
	var tbl = document.getElementById('orderListTableTbody_' + week);
	var row = tbl.insertRow(-1);

	var cell = row.insertCell(0);
	var textNode = document.createTextNode(id);
	cell.appendChild(textNode);
	
	var cell = row.insertCell(1);
	var textNode = document.createTextNode(amount);
	cell.appendChild(textNode);
	
	/*
	var delImg = document.createElement('img');
	delImg.setAttribute("src", basedir + "images/icons/cross.png");
	delImg.setAttribute("alt", "Delete");
	var delLink = document.createElement('A');
	delLink.style.cursor = "pointer";
	delLink.setAttribute("onclick", 'DeleteOrder("' + week + '", "' + product_id + '")');
	delLink.appendChild(delImg);
	
	var cell = row.insertCell(2);
	cell.appendChild(delLink);
	*/
	var span_trays = document.getElementById('order_trays_' + week);
	var trays = parseInt(span_trays.innerHTML);
	span_trays.innerHTML = (1*trays) + (1*amount);
	
	var span_plants = document.getElementById('order_plants_' + week);
	var plants = parseInt(span_plants.innerHTML);
	span_plants.innerHTML = plants + (amount * plantsTray);
}

function toggle_visibility(element_id, img_id)
{
	var img = document.getElementById(img_id);
	if(img.alt == "expand")
	{
		img.alt = "minimize";
		img.src = basedir + "images/icons/bullet_toggle_minus.png";
		$('#'+element_id).slideDown("slow");
		$('#'+element_id).removeClass("orderListTableVisible");
	}
	else
	{
		img.alt = "expand";
		img.src = basedir + "images/icons/bullet_toggle_plus.png";
		$('#'+element_id).slideUp("slow");
		$('#'+element_id).addClass("orderListTableVisible");
	}
}

function AddEvents()
{
	/*
	// order input loses focus
	$(".order_input").blur(function()
	{
         orderFromInputEvent(this);
    });
	
	//order input enter key pressed
	$(".order_input").keypress(function(e)
	{
		switch(e.which)
		{
			case 13:
				orderFromInputEvent(this);
				return false;
				break;
		}
		return true;
	});
	*/
	
	//order arrow clicked
	$(".order_arrow").click(function()
	{
		order_arrow(this);
	});
	$(".order_input").bind('keypress', function(e)
	{
		var code = (e.keyCode ? e.keyCode : e.which);
		if(code == 13) { //Enter keycode
			$("#btn_confirm").trigger('click');
			return false;
		}
	});
}

function addFancyImages()
{
	$(".ajaxImages").fancybox(
	{
		'zoomSpeedIn': 300,
		'zoomSpeedOut': 300,
		'overlayShow': true,
		'imageScale': true,
		'centerOnScroll': true,
		'frameWidth': 700,
		'frameHeight': 600
	});
}

function addLoadEvents(func) 
{
	if (!document.getElementById) return;
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else 
	{
		window.onload = function() 
		{
			oldonload();
			func();
		}
	}
}

boolFilterOrder = false;

addLoadEvents(AddEvents);
addLoadEvents(GerenrateTable);
