var newItemId = 0;
var newItemPriceId = 0;
var editingCategory = false;
var editCategoryName = "";
var editCategoryDescription = "";
var editCategoryId = "";

var addingCategory = false;

var editingItem = false;
var editItemName = "";
var editItemDescription = "";
var editItemId = "";

var editItemPriceId = new Array();
var editItemPriceName = new Array();
var editItemPricePrice = new Array();
var editItemPriceRemove = new Array();

function minimizeCategory(event, element)
{
	if(event){
		element = Event.element(event);						
	}
	
	var categoryId = element.parentNode.parentNode.id.replace("category_", "");	
	
	var newItemList = $('newItemList_' + categoryId);
	if(newItemList.className == "newItemListContainerHidden"){
		newItemList.className = "newItemListContainer";
		element.innerHTML = "Minimize";		
	}else{
		element.innerHTML = "Maximize";
		newItemList.className = "newItemListContainerHidden";
	}
	
	if(event){
		Event.stop(event);
	}
	return false;
}

function addItem(event, element)
{		
	if(event){
		element = Event.element(event);
	}
	
	var categoryList = element.parentNode.parentNode.parentNode;	
	var newItemLi = document.createElement("li");	
	var newItemPName = document.createElement("p");
	
	newItemPName.innerHTML = "Item Name:<br/>";
	
	var newItemPDescription = document.createElement("p");
	newItemPDescription.innerHTML = "Item Description:<br/>";
	
	var newItemPSaveCancel = document.createElement("p");
	
	var newItemName = document.createElement("input");
	newItemName.id = "newItemName_" + newItemId;
	newItemName.className = "editJSInput";
	
	var newItemDescription = document.createElement("textarea");
	newItemDescription.className = "editJSTextArea";
	newItemDescription.id = "newItemDescription_" + newItemId;
	
	var newItemSave =  document.createElement("input");
	newItemSave.id = "save_" + newItemId;
	newItemSave.type = "button";
	newItemSave.value = "Save";
	
	var newItemCancel =  document.createElement("input");	
	newItemCancel.id = "cancel_" + newItemId;
	newItemCancel.type = "button";
	newItemCancel.value = "Cancel";
		
	newItemPName.appendChild(newItemName);
	newItemPDescription.appendChild(newItemDescription);	
	newItemPSaveCancel.appendChild(newItemSave);
	newItemPSaveCancel.appendChild(newItemCancel);
	
	newItemLi.appendChild(newItemPName);
	newItemLi.appendChild(newItemPDescription);	
	newItemLi.appendChild(newItemPSaveCancel);
	
	categoryList.appendChild(newItemLi);
	
	$("save_" + newItemId).observe("click", commandAddItem); 
	$("cancel_" + newItemId).observe("click", cancelItem); 
	
	$("cancel_" + newItemId).focus();
	$("newItemName_" + newItemId).focus();
	
	newItemId++;
	
	if(event){
		Event.stop(event);
	}
	return false;
}


function editCategory(event, element)
{
	if(event){
		element = Event.element(event);					
		if(!element.id){
			element = element.parentNode;
		}
	}
	
	categoryId = element.id.replace("categoryEdit_", "");	
	
	cancelEditCategory();
	var categoryNameP = $("categoryName_" + categoryId);
	var categoryDescriptionP = $("categoryDescription_" + categoryId);
	var categorySubmitP = $("categorySubmit_" + categoryId);	

	editCategoryName = categoryNameP.innerHTML;
	editCategoryDescription = categoryDescriptionP.innerHTML;
	editCategoryId = categoryId;
		
	var categoryName = document.createElement("input");
	categoryName.id = "editCategoryName_" + categoryId;
	categoryName.className = "editJSInput";
	categoryName.value = decode(editCategoryName);
	
	var categoryDescription = document.createElement("textarea");
	categoryDescription.id = "editCategoryDescription_" + categoryId;
	categoryDescription.className = "editJSTextArea";
	categoryDescription.innerHTML = editCategoryDescription;
	
	var categorySave =  document.createElement("input");
	categorySave.id = "saveCategory_" + categoryId;
	categorySave.type = "button";
	categorySave.value = "Save";
	
	var categoryCancel =  document.createElement("input");	
	categoryCancel.id = "cancelCategory_" + categoryId;
	categoryCancel.type = "button";
	categoryCancel.value = "Cancel";
	
	categoryNameP.innerHTML = "<b>Name</b><br/>";
	categoryDescriptionP.innerHTML = "<b>Description</b><br/>";
	categorySubmitP.innerHTML = "&nbsp;";
	
	categoryNameP.appendChild(categoryName);
	categoryDescriptionP.appendChild(categoryDescription);
	categorySubmitP.appendChild(categorySave);
	categorySubmitP.appendChild(categoryCancel);
	
	$("saveCategory_" + categoryId).observe("click", saveCategory); 
	$("cancelCategory_" + categoryId).observe("click", cancelEditCategory);
	
	$("cancelCategory_" + categoryId).focus();
	$("editCategoryName_" + categoryId).focus();
	
	editingCategory = true;
	
	if(event){
		Event.stop(event);
	}
	return false;
}

function editItem(event, element, resetItem)
{	
	if(event){		
		element = Event.element(event).parentNode;					
	}
	
	itemId = element.id.replace("editItem_", "");	
	
	if(resetItem && itemId == editItemId){
		resetEditItem();
	}else{
		cancelEditItem();	
	}
	
	
	
	var itemNameP = $("itemName_" + itemId);
	var itemDescriptionP = $("itemDescription_" + itemId);
	var itemSubmitP = $("itemSubmit_" + itemId);	
	
	editItemName = itemNameP.innerHTML;
	editItemDescription = itemDescriptionP.innerHTML;
	editItemId = itemId;
		
	var itemName = document.createElement("input");
	itemName.id = "editItemName_" + itemId;
	itemName.className = "editJSInput";
	itemName.value = decode(editItemName);
	
	var itemDescription = document.createElement("textarea");
	itemDescription.id = "editItemDescription_" + itemId;
	itemDescription.className = "editJSTextArea";
	itemDescription.innerHTML = editItemDescription;
	
	var itemSave =  document.createElement("input");
	itemSave.id = "saveItem_" + itemId;
	itemSave.type = "button";
	itemSave.value = "Save";
	
	var itemCancel =  document.createElement("input");	
	itemCancel.id = "cancelItem_" + itemId;
	itemCancel.type = "button";
	itemCancel.value = "Cancel";
	
	itemNameP.innerHTML = "<b>Name</b><br/>";
	itemDescriptionP.innerHTML = "<b>Description</b><br/>";
	itemSubmitP.innerHTML = "&nbsp;";
	
	itemNameP.appendChild(itemName);
	itemDescriptionP.appendChild(itemDescription);
	itemSubmitP.appendChild(itemSave);
	itemSubmitP.appendChild(itemCancel);
	
	$("saveItem_" + itemId).observe("click", saveItem); 
	$("cancelItem_" + itemId).observe("click", cancelEditItem);
	
	
	var itemPriceList = $("itemPrice_" + itemId);	
	if (itemPriceList.hasChildNodes()){		
		for(var i = 0; i < itemPriceList.childNodes.length; i++){					
			if(itemPriceList.childNodes[i].className == "newPriceList"){				
				var itemPriceP = itemPriceList.childNodes[i].childNodes[0];
				var itemPriceName = itemPriceP.childNodes[0];
				var itemPricePrice = itemPriceP.childNodes[1];
				var itemPriceRemove = itemPriceP.childNodes[2];
				
				var itemPriceId = itemPriceName.id.replace("priceName_", "");
				
				editItemPriceId[i] = itemPriceId;
				editItemPriceName[i] = itemPriceName.innerHTML;
				editItemPricePrice[i] = itemPricePrice.innerHTML.replace("$", "");
								
				var editItemPriceNameInput = document.createElement("input");
				editItemPriceNameInput.className = "editJSInput";
				editItemPriceNameInput.id = "itemPriceName_" + itemPriceId;
				editItemPriceNameInput.value = editItemPriceName[i];
				
				var editItemPricePriceInput = document.createElement("input");
				editItemPricePriceInput.className = "editJSInputSmall";
				editItemPricePriceInput.id = "itemPricePrice_" + itemPriceId;
				editItemPricePriceInput.value = editItemPricePrice[i];
				
				var editItemPriceRemoveLink = document.createElement("a");
				editItemPriceRemoveLink.src = "#";
				editItemPriceRemoveLink.innerHTML = "<img src=\"/design/remove.png\" />";
				editItemPriceRemoveLink.id = "removePrice_" + i;				
				
				itemPriceName.innerHTML = "";
				itemPricePrice.innerHTML = "";
				
				itemPriceName.appendChild(editItemPriceNameInput);
				itemPricePrice.appendChild(editItemPricePriceInput);
				itemPriceRemove.appendChild(editItemPriceRemoveLink);
				
				$("removePrice_" + i).observe("click", removePrice);
				
			}		
		}		
	}	
	
	editingItem = true;
	if(event){
		Event.stop(event);		
	}
	return false;	
}

function removePrice(event)
{
	var element = Event.element(event);			
	element = element.parentNode;
	
	var priceLocation = element.id.replace("removePrice_", "");	
	var priceId = editItemPriceId[priceLocation];
		
	//editItemPriceName[priceLocation] = "";
	//editItemPricePrice[priceLocation] = "";
	editItemPriceRemove[priceLocation] = true;
	
	//$("itemPriceName_" + priceId).value = "";
	//$("itemPricePrice_" + priceId).value = "";	
	element.parentNode.parentNode.parentNode.style.display = "none";
}

function removePriceById(priceId)
{
	var element = $("removePrice_" + priceId);
	var priceLocation = element.id.replace("removePrice_", "");	
	editItemPriceRemove[priceLocation]
	element.parentNode.parentNode.parentNode.style.display = "none";
}

function decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}

function cancelEditCategory()
{	
	if(editingCategory)
	{		
		var categoryNameP = $("categoryName_" + editCategoryId);
		var categoryDescriptionP = $("categoryDescription_" + editCategoryId);
		var categorySubmitP = $("categorySubmit_" + editCategoryId);
		
		categoryNameP.innerHTML = editCategoryName;
		categoryDescriptionP.innerHTML = editCategoryDescription;
		categorySubmitP.innerHTML = "";
		
		editingCategory = false;
		editCategoryName = "";
		editCategoryDescription = "";
		editCategoryId = "";
	}
}

function resetEditItem()
{
	if(editingItem)
	{		
		var itemNameP = $("itemName_" + editItemId);
		var itemDescriptionP = $("itemDescription_" + editItemId);
		var itemSubmitP = $("itemSubmit_" + editItemId);
		
		itemNameP.innerHTML = editItemName;
		itemDescriptionP.innerHTML = editItemDescription;
		itemSubmitP.innerHTML = "";
		
		var itemPriceList = $("itemPrice_" + editItemId);		
		if (itemPriceList.hasChildNodes()){
			for(var i = 0; i < itemPriceList.childNodes.length; i++){																
				var itemPriceP = itemPriceList.childNodes[i].childNodes[0];					
				var itemPriceName = itemPriceP.childNodes[0];
				var itemPricePrice = itemPriceP.childNodes[1];	
				var itemPriceRemove = itemPriceP.childNodes[2];	
				
				if(itemPriceName.hasChildNodes() && !editItemPriceRemove[i]){
					itemPriceName.innerHTML = itemPriceName.childNodes[0].value;					
					itemPricePrice.innerHTML = "$" + itemPricePrice.childNodes[0].value;					
					itemPriceRemove.innerHTML = "";									
					itemPriceList.childNodes[i].style.display = "";
				}				
				//itemPriceRemove.parentNode.parentNode.parentNode.style.display = "none";						
			}
		}
				
		editingItem = false;
		editItemName = "";
		editItemDescription = "";
		editItemId = "";
		editItemPriceName = new Array();
		editItemPricePrice = new Array();
		editItemPriceId = new Array();
		
		
		
	}
}

function cancelEditItem()
{	
	var deletePriceItemList = new Array();
	var itemPriceList = $("itemPrice_" + editItemId);
	if(editingItem)
	{		
		var itemNameP = $("itemName_" + editItemId);
		var itemDescriptionP = $("itemDescription_" + editItemId);
		var itemSubmitP = $("itemSubmit_" + editItemId);
		
		itemNameP.innerHTML = editItemName;
		itemDescriptionP.innerHTML = editItemDescription;
		itemSubmitP.innerHTML = "";		
				
		if (itemPriceList.hasChildNodes()){
			
			for(var i = 0; i < itemPriceList.childNodes.length; i++){																	
				var itemPriceP = itemPriceList.childNodes[i].childNodes[0];					
				var itemPriceName = itemPriceP.childNodes[0];
				var itemPricePrice = itemPriceP.childNodes[1];	
				var itemPriceRemove = itemPriceP.childNodes[2];	
				//TODO
				if(itemPriceName.childNodes[0].id.search("_NEW_") > -1){								
					deletePriceItemList[deletePriceItemList.length] = i;
				}else{					
					itemPriceName.innerHTML = editItemPriceName[i];					
					itemPricePrice.innerHTML = "$" + editItemPricePrice[i];
				}		
									
				itemPriceRemove.innerHTML = "";									
				itemPriceList.childNodes[i].style.display = "";
				//itemPriceRemove.parentNode.parentNode.parentNode.style.display = "none";				
			}
		}
		
		for(var i = deletePriceItemList.length - 1; i >= 0; i--){
			itemPriceList.removeChild(itemPriceList.childNodes[deletePriceItemList[i]]);
		}
				
		editingItem = false;
		editItemName = "";
		editItemDescription = "";
		editItemId = "";
		editItemPriceName = new Array();
		editItemPricePrice = new Array();
		editItemPriceId = new Array();
		
		
		
	}
}
function saveItem()
{
	
	var itemDescription = $("editItemDescription_" + editItemId);	
	
	
	if(itemDescription.value != ""){
		itemDescriptionValue = itemDescription.value;
	}else{
		itemDescriptionValue = itemDescription.innerHTML;
	}
	
	var itemName = $("editItemName_" + editItemId);
	var itemPriceId = "";
	var itemPriceName = "";
	var itemPricePrice = "";
	
	for(var i = 0; i < editItemPriceId.length; i++){		
		var itemPriceNameInput = $("itemPriceName_" + editItemPriceId[i]);
		var itemPricePriceInput = $("itemPricePrice_" + editItemPriceId[i]);
		
		if(editItemPriceRemove[i]){			
			editItemPriceName[i] = "";
			editItemPricePrice[i] = "";			
			
			itemPriceId += "itemPriceId[]=" + editItemPriceId[i] + "&";			
			itemPriceName += "itemPriceName[]=&";			
			itemPricePrice += "itemPricePrice[]=&";
			
			var itemPriceList = $("itemPrice_" + editItemId);		
			if (itemPriceList.hasChildNodes()){
				for(var i = 0; i < itemPriceList.childNodes.length; i++){	
					if(editItemPriceRemove[i]){
						itemPriceList.removeChild(itemPriceList.childNodes[i]);
					}
				}
			}
				
		}else{
			//TODO
			if(itemPriceNameInput.parentNode.id.search("_NEW_") > -1){
				itemPriceId += "itemPriceId[]=NEW&";				
			}else{
				itemPriceId += "itemPriceId[]=" + editItemPriceId[i] + "&";			
			}
			
			
			itemPriceName += "itemPriceName[]=" + itemPriceNameInput.value + "&";			
			itemPricePrice += "itemPricePrice[]=" + itemPricePriceInput.value + "&";			
						
			editItemPriceName[i] = itemPriceNameInput.value;
			editItemPricePrice[i] = itemPricePriceInput.value;
		}		
	}
	
	if(itemPriceId.length > 0){
		itemPriceId = "&" + itemPriceId.substring(0, itemPriceId.length - 1);
		itemPriceName = "&" + itemPriceName.substring(0, itemPriceName.length - 1);
		itemPricePrice = "&" + itemPricePrice.substring(0, itemPricePrice.length - 1);			
	}
			
		var opt = {
	    // Use POST
	    method: 'post',
	    postBody:"itemId=" + editItemId + "&name=" + itemName.value + "&description=" + itemDescriptionValue + itemPriceId + itemPriceName + itemPricePrice,
	    // Handle successful response
	    onSuccess: function(t) {	  	    	 	    		
	    	var successItemId = editItemId;
	    	editItemName = itemName.value;
	    	editItemDescription = itemDescriptionValue;
	    	cancelEditItem();
	    	recreatePriceList(successItemId);
	    	
	    	new Effect.Highlight("item_" + successItemId);
	    },
	    // Handle 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Handle other errors
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	new Ajax.Request('/lib/services/editItem.php', opt);
}

function saveCategory()
{
	//TODO!
	
	var categoryDescription = $("editCategoryDescription_" + editCategoryId);		
	if(categoryDescription.value != ""){			
		categoryDescriptionValue = categoryDescription.value;
	}else{		
		
		categoryDescriptionValue = categoryDescription.innerHTML;
	}
	var categoryName = $("editCategoryName_" + editCategoryId);
	
	var opt = {
	    // Use POST
	    method: 'post',
	    postBody:"categoryId=" + editCategoryId + "&name=" + categoryName.value + "&description=" + categoryDescriptionValue,
	    // Handle successful response
	    onSuccess: function(t) {	  	    	
	    	 var successCategoryId = editCategoryId;
	    	 editCategoryName = categoryName.value;
	    	 editCategoryDescription = categoryDescriptionValue;
	       cancelEditCategory();
	       new Effect.Highlight('category_' + successCategoryId);
	              
	    },
	    // Handle 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Handle other errors
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	new Ajax.Request('/lib/services/editCategory.php', opt);
}

function cancelItem()
{
	var parentLi = this.parentNode.parentNode;	
	var parentUl = this.parentNode.parentNode.parentNode;	
	parentUl.removeChild(parentLi);
}

function expandContractMenuCatgory()
{
	alert("hi");
}

function editMenuName(element)
{	
	var categoryId = element.parentNode.parentNode.id;
	var newInputText, newInputSave, newInputCancel;
	
	newInputText = document.createElement("input");
	newInputSave = document.createElement("input");
	newInputCancel = document.createElement("input");
	
	var menuNameContainer = element.parentNode;
		
	if(element.nextSibling){
		menuNameContainer.removeChild(element.nextSibling);
	}
	
	newInputText.type = "text";
	newInputText.value = element.innerHTML;
	newInputText.size = element.innerHTML.length + 10;
	newInputText.id = "tempMenuName";	
	
	newInputSave.type = "button";
	newInputSave.value = "Save";	
	newInputSave.id = "tempMenuNameSave";	
	newInputSave.addEventListener("click", saveMenuName, false); 
	
	newInputCancel.type = "button";
	newInputCancel.value = "Cancel";	
	newInputCancel.id = "tempMenuNameCancel";
	newInputCancel.onclick = "cancelMenuName();";
	newInputCancel.addEventListener("click", cancelMenuName, false); 
	
	menuNameContainer.appendChild(newInputText);		
	menuNameContainer.appendChild(newInputSave);		
	menuNameContainer.appendChild(newInputCancel);		
	
	document.getElementById("tempMenuName").focus();
}

function cancelMenuName()
{
	var menuNameText = document.getElementById("tempMenuName");
	var menuNameSave = document.getElementById("tempMenuNameSave");
	var menuNameCancel = document.getElementById("tempMenuNameCancel");
	
	var menuNameContainer = menuNameText.parentNode;
	menuNameContainer.removeChild(menuNameText);
	menuNameContainer.removeChild(menuNameSave);
	menuNameContainer.removeChild(menuNameCancel);
}

function saveMenuName()
{
	var menuNameText = document.getElementById("tempMenuName");
	var menuNameSave = document.getElementById("tempMenuNameSave");
	var menuNameCancel = document.getElementById("tempMenuNameCancel");
	
	var menuNameContainer = menuNameText.parentNode;
	menuNameContainer.removeChild(menuNameText);
	menuNameContainer.removeChild(menuNameSave);
	menuNameContainer.removeChild(menuNameCancel);
}

function recreateSortableList(categoryId)
{
	Sortable.destroy('newItemList_' + categoryId);
	createSortableList(categoryId);
} 

function recreateSortableListCategory()
{
	Sortable.destroy('newMenuList');	
	createSortableListCategory();
}

function createSortableListCategory()
{	
	//TODO
	Sortable.create('newMenuList', {handle:'drag', ghosting:false, onUpdate: 
				
	function(sortable)
	{									
		
			var restaurantId = $("restaurantId").value;			
			new Ajax.Request('/lib/services/changecategoryorder.php?restautantId=' + escape(restaurantId), {method:'post', 
			postBody:Sortable.serialize(sortable),

			onSuccess: 
			function(t) 
			{				
					new Effect.Highlight('newMenuList');
					return false;
			},
			// Handle 404
			on404: function(t) 
			{
				alert('Error 404');
			},
			// Handle other errors
			onFailure: function(t) 
			{
				alert('Error ' + t.status + ' -- ' + t.statusText);
			}
		
		});

	}});
	
}

function createSortableList(categoryId)
{	
	Sortable.create('newItemList_' + categoryId, {handle:'drag', ghosting:false, onUpdate: 
				
	function(sortable)
	{									
			new Ajax.Request('/lib/services/changeitemorder.php?categoryId=' + escape(categoryId), {method:'post', 
			postBody:Sortable.serialize(sortable),

			onSuccess: 
			function(t) 
			{				
					new Effect.Highlight('newItemList_' + categoryId);
					return false;
			},
			// Handle 404
			on404: function(t) 
			{
				alert('Error 404');
			},
			// Handle other errors
			onFailure: function(t) 
			{
				alert('Error ' + t.status + ' -- ' + t.statusText);
			}
		
		});

	}});
}

function addItemPrice(event, element)
{
	
	if(event){		
		element = Event.element(event);			
		if(element.id.length <= 0){
			element = element.parentNode;
		}		
	}	
	
	itemId = element.id.replace("addItemPriceElement_", "");
	
	//TODO	
	newItemPriceLi = document.createElement("li");
	newItemPriceLi.className = "newPriceList";
	
	newItemPriceP = document.createElement("p");
	newItemPriceP.className = "itemPriceName";
	
	newItemPriceName = document.createElement("span");
	newItemPriceName.id = "priceName_NEW_" + newItemPriceId;
		
	newItemPricePrice = document.createElement("span");
	newItemPricePrice.id = "pricePrice_NEW_" + newItemPriceId;
	
	newItemPriceRemove = document.createElement("span");
	
	newItemPriceP.appendChild(newItemPriceName);	
	newItemPriceP.appendChild(newItemPricePrice);	
	newItemPriceP.appendChild(newItemPriceRemove);
	
	newItemPriceLi.appendChild(newItemPriceP);
	
	//GET UL
	newItemPriceUL = $("itemPrice_" + itemId);
	
	newItemPriceUL.appendChild(newItemPriceLi);
		
	newItemPriceId++;
	
	var editItemElement = $("editItem_" + itemId);	
	editItem(null, editItemElement, true);
	
	if(event){
		Event.stop(event);		
	}
	return false;
}

function recreatePriceList(itemId)
{	
	var myAjax = new Ajax.Updater(
		'itemPrice_' + itemId, 
		'/lib/services/getPriceList.php', 
		{
			method: 'post', 
			postBody: "itemId=" + itemId
		});
}

function removeCategory(event, element)
{
	if(event){		
		element = Event.element(event);
		if(!element.id){
			element = element.parentNode;
		}	
	}
	
	categoryId = element.id.replace("removeCategoryElement_", "");	
	
	var parentLi = element.parentNode.parentNode;
	var parentUl = parentLi.parentNode;

	
	var opt = {
	    // Use POST
	    method: 'post',
	    postBody:"categoryId=" + categoryId,
	    // Handle successful response
	    onSuccess: function(t) {	  	    		    	
	    	parentUl.removeChild(parentLi);	    	
	      new Effect.Highlight('newMenuList');	              
	    },
	    // Handle 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Handle other errors
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	new Ajax.Request('/lib/services/deleteCategory.php', opt);
	
	
	
	
	if(event){
		Event.stop(event);		
	}
	return false;
}

function removeItem(event, element)
{
	if(event){			
		element = Event.element(event).parentNode;							
	}
	
	if(element.id.search("removeItemElement_") > -1){
		itemId = element.id.replace("removeItemElement_", "");		
	}else{
		itemId = element.id.replace("removeItem_", "");				
	}
		
	
	
	var parentLi = element.parentNode.parentNode;
	var parentUl = parentLi.parentNode;

	
	var opt = {
	    // Use POST
	    method: 'post',
	    postBody:"itemId=" + itemId,
	    // Handle successful response
	    onSuccess: function(t) {	  	    		    		    	
	    	parentUl.removeChild(parentLi);	    	
	      new Effect.Highlight(parentUl.id);	              
	    },
	    // Handle 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Handle other errors
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	new Ajax.Request('/lib/services/deleteItem.php', opt);
	
	
	
	
	if(event){
		Event.stop(event);		
	}
	return false;
}

function addCategory(element)
{
	if(!addingCategory){
		var categoryList = $("newMenuList");
	
		var newCategoryLi = document.createElement("li");	
		newCategoryLi.id = "newCategoryLi";
		var newCategoryPName = document.createElement("p");
		
		newCategoryPName.innerHTML = "Category Name:<br/>";
		
		var newCategoryPDescription = document.createElement("p");
		newCategoryPDescription.innerHTML = "Category Description:<br/>";
		
		var newCategoryPSaveCancel = document.createElement("p");
		
		var newCategoryName = document.createElement("input");
		newCategoryName.id = "newCategoryName";
		newCategoryName.className = "editJSInput";
		
		var newCategoryDescription = document.createElement("textarea");
		newCategoryDescription.className = "editJSTextArea";
		newCategoryDescription.id = "newCategoryDescription";
		
		var newCategorySave =  document.createElement("input");
		newCategorySave.id = "saveNewCategory";
		newCategorySave.type = "button";
		newCategorySave.value = "Save";
		
		var newCategoryCancel =  document.createElement("input");	
		newCategoryCancel.id = "cancelNewCategory";
		newCategoryCancel.type = "button";
		newCategoryCancel.value = "Cancel";
			
		newCategoryPName.appendChild(newCategoryName);
		newCategoryPDescription.appendChild(newCategoryDescription);	
		newCategoryPSaveCancel.appendChild(newCategorySave);
		newCategoryPSaveCancel.appendChild(newCategoryCancel);
		
		newCategoryLi.appendChild(newCategoryPName);
		newCategoryLi.appendChild(newCategoryPDescription);	
		newCategoryLi.appendChild(newCategoryPSaveCancel);
		
		categoryList.appendChild(newCategoryLi);
		
		$("saveNewCategory").observe("click", commandAddCategory); 
		$("cancelNewCategory").observe("click", cancelAddCategory); 
		
		$("saveNewCategory").focus();
		$("newCategoryName").focus();
	}else{
		$("saveNewCategory").focus();
		$("newCategoryName").focus();
	}
	
	addingCategory = true;
	
	return false;
}

function commandAddItem(event)
{
	var element = Event.element(event);	

	var itemId = element.id.replace("save_", ""); 	
	var parentLi = this.parentNode.parentNode;	
	var parentUl = parentLi.parentNode;	
	
	var newElementName = $("newItemName_" + itemId);
	var newElementDescription = $("newItemDescription_" + itemId);
	var categoryId = parentUl.id.replace("newItemList_", "");
	
	if(newElementDescription.value != ""){
		newElementDescriptionValue = newElementDescription.value;
	}else{
		newElementDescriptionValue = newElementDescription.innerHTML;
	}
	
	var opt = {
	    // Use POST
	    method: 'post',
	    postBody:"name=" + newElementName.value + "&description=" + newElementDescriptionValue,
	    // Handle successful response
	    onSuccess: function(t) {	        	       
	     
	      
	      //COMMAND PARAGRAPH      
				var newItemId = t.responseText;
				parentLi.innerHTML = "";				
				parentLi.id = "item_" + newItemId;
				parentLi.className = "newItemList";
				
				var newItemP = document.createElement("p");
				newItemP.className = "newMenuCommand";
				
				var newItemDrag = document.createElement("img");
				newItemDrag.src = "/design/drag.png";
				newItemDrag.className = "drag";
				
				var newItemEdit = document.createElement("a");
				newItemEdit.href = "#";
				newItemEdit.id = "editItem_" + newItemId;				
				
				var newItemEditImage = document.createElement("img");
				newItemEditImage.src = "/design/edit.png";
								
				var newItemRemove = document.createElement("a");
				newItemRemove.href = "#";
				newItemRemove.id = "removeItem_" + newItemId;
				
				
				var newItemRemoveImage = document.createElement("img");
				newItemRemoveImage.src = "/design/remove.png";
				
				newItemEdit.appendChild(newItemEditImage);
				newItemRemove.appendChild(newItemRemoveImage);
				
				newItemP.appendChild(newItemDrag);
				newItemP.appendChild(newItemEdit);
				newItemP.appendChild(newItemRemove);
	      
	      //NAME PARAGRAPH
	      
	      var newItemNameP = document.createElement("p");
	      newItemNameP.className = "newItemName";
	      newItemNameP.id = "itemName_" + newItemId;
	      newItemNameP.innerHTML = newElementName.value;
	      
	      //DESCRIPTION PARAGRAPH	      
	      var newItemDescriptionP = document.createElement("p");
	      newItemDescriptionP.className = "newItemDescription";
	      newItemDescriptionP.id = "itemDescription_" + newItemId;
	      newItemDescriptionP.innerHTML = newElementDescriptionValue;
	      
	      //ITEM PRICES LIST UL	      
	      var newItemPricesList = document.createElement("ul");
	      newItemPricesList.className = "newPriceListContainer";
	      newItemPricesList.id = "itemPrice_" + newItemId;
	      
	      //TODO 
	      
	      var newItemPriceAddP = document.createElement("p");
	      newItemPriceAddP.className = "newAddPriceItem";
	      
	      var newItemPriceAddA = document.createElement("a");
	      newItemPriceAddA.href = "#";
	      newItemPriceAddA.id = "addItemPriceElement_" + newItemId;
	      
	      var newItemPriceAddIMG = document.createElement("img");
	      newItemPriceAddIMG.src = "/design/list-add.png";
	      
	      newItemPriceAddA.appendChild(newItemPriceAddIMG);
	      newItemPriceAddA.innerHTML += " Add Price";
	      newItemPriceAddP.appendChild(newItemPriceAddA);
	      
	      	      
	      var newItemSubmitP = document.createElement("p");
	      newItemSubmitP.className = "newMenuSubmit";
	      newItemSubmitP.id = "itemSubmit_" + newItemId;
	      
	      
	      
	      parentLi.appendChild(newItemP);
	      parentLi.appendChild(newItemNameP);
	      parentLi.appendChild(newItemDescriptionP);
	      parentLi.appendChild(newItemPriceAddP);
	      parentLi.appendChild(newItemPricesList);
	      parentLi.appendChild(newItemSubmitP);	
	            
	      $("editItem_" + newItemId).observe("click", editItem, false);  
	      $("removeItem_" + newItemId).observe("click", removeItem, false);        
	      $("addItemPriceElement_" + newItemId).observe("click", addItemPrice, false);
	         	      	      
	      recreateSortableList(categoryId);      
	      
	    },
	    // Handle 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Handle other errors
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	new Ajax.Request('/lib/services/addItem.php?categoryId=' + escape(categoryId), opt);	
}

function commandAddCategory(event)
{
	var element = Event.element(event);	
	var elementParentUL = element.parentNode.parentNode.parentNode;
		
	var newCategoryName = $("newCategoryName").value;
	var newCategoryDescription = $("newCategoryDescription");
	var restaurantId = $("restaurantId").value;
	
	if(newCategoryDescription.innerHTML.length > 0){
		newElementDescriptionValue = newCategoryDescription.innerHTML;
	}else{
		newElementDescriptionValue = newCategoryDescription.value;
	}
	
	
	var opt = {
	    // Use POST
	    method: 'post',
	    postBody:"name=" + newCategoryName + "&description=" + newElementDescriptionValue + "&restaurantId=" + restaurantId,
	    // Handle successful response
	    onSuccess: function(t) {	
	    	
	    	 cancelAddCategory();        	       
	       newCategoryId = t.responseText;
	       
	       var newMenuCategoryLI = document.createElement("li");	       
	       		var newMenuCategoryCommandP = document.createElement("p");
	       			var newMenuCategoryCommandDragIMG = document.createElement("img");
	       			var newMenuCategoryCommandEditA = document.createElement("a");
	       				var newMenuCategoryCommandEditIMG = document.createElement("img");
	       			var newMenuCategoryCommandRemoveA = document.createElement("a");
	       			var newMenuCategoryCommandRemoveIMG = document.createElement("img");
	       			var newMenuCategoryCommandMinimizeA = document.createElement("a");
	       		var newMenuCategoryNameP = document.createElement("p");
	       		var newMenuCategoryDescriptionP = document.createElement("p");
	       		var newMenuCategorySubmitP = document.createElement("p");
	       		var newMenuCategoryItemListUL = document.createElement("ul");
	       			var newMenuCategoryItemListLI = document.createElement("li");
	       				var newMenuCategoryItemListP = document.createElement("p");
	       					var newMenuCategoryItemListA = document.createElement("a");
	       					
				newMenuCategoryLI.className = "newMenuCategory";
				newMenuCategoryLI.id = "category_" + newCategoryId;
				
				newMenuCategoryCommandP.className = "newMenuCommand";
				
				newMenuCategoryCommandDragIMG.src="/design/drag.png";
				newMenuCategoryCommandDragIMG.className="drag";
				
				
				newMenuCategoryCommandEditA.href = "#";	
				newMenuCategoryCommandEditA.id = "categoryEdit_" + newCategoryId;
				
				newMenuCategoryCommandEditIMG.src = "/design/edit.png";
				
				newMenuCategoryCommandRemoveA.href = "#";	 
				newMenuCategoryCommandRemoveA.id = "removeCategoryElement_" + newCategoryId;
				
				newMenuCategoryCommandRemoveIMG.src = "/design/remove.png";
				
				newMenuCategoryCommandMinimizeA.href = "#";
				newMenuCategoryCommandMinimizeA.innerHTML = "Maximize";
				newMenuCategoryCommandMinimizeA.id = "minimizeCategory_" + newCategoryId;
				
				
				newMenuCategoryNameP.className = "newMenuName";
				newMenuCategoryNameP.id = "categoryName_" + newCategoryId;
				newMenuCategoryNameP.innerHTML = newCategoryName;
				
				newMenuCategoryDescriptionP.className = "newMenuDescription";
				newMenuCategoryDescriptionP.id = "categoryDescription_" + newCategoryId;
				newMenuCategoryDescriptionP.innerHTML = newElementDescriptionValue;
				
				newMenuCategorySubmitP.className = "newMenuSubmit";
				newMenuCategorySubmitP.id = "categorySubmit_" + newCategoryId;
				
				newMenuCategoryItemListUL.className = "newItemListContainerHidden";
				newMenuCategoryItemListUL.id = "newItemList_" + newCategoryId;
				
				newMenuCategoryItemListA.href = "#";
				newMenuCategoryItemListA.innerHTML = "Add Item";
				newMenuCategoryItemListA.id = "category_AddItem_" + newCategoryId;
				//TODO
				
				newMenuCategoryCommandEditA.appendChild(newMenuCategoryCommandEditIMG);
				newMenuCategoryCommandP.appendChild(newMenuCategoryCommandDragIMG);
				newMenuCategoryCommandP.appendChild(newMenuCategoryCommandEditA);
				
				newMenuCategoryCommandRemoveA.appendChild(newMenuCategoryCommandRemoveIMG);
				
				newMenuCategoryCommandP.appendChild(newMenuCategoryCommandRemoveA);
				
				newMenuCategoryCommandP.appendChild(newMenuCategoryCommandMinimizeA);
				
				newMenuCategoryItemListP.appendChild(newMenuCategoryItemListA);
				newMenuCategoryItemListLI.appendChild(newMenuCategoryItemListP);
				newMenuCategoryItemListUL.appendChild(newMenuCategoryItemListLI);
				
				newMenuCategoryLI.appendChild(newMenuCategoryCommandP);
				newMenuCategoryLI.appendChild(newMenuCategoryNameP);
				newMenuCategoryLI.appendChild(newMenuCategoryDescriptionP);
				newMenuCategoryLI.appendChild(newMenuCategorySubmitP);
				newMenuCategoryLI.appendChild(newMenuCategoryItemListUL);	       
	      
	      elementParentUL.appendChild(newMenuCategoryLI);
	      
	      $("categoryEdit_" + newCategoryId).observe("click", editCategory, false);  
	      $("removeCategoryElement_" + newCategoryId).observe("click", removeCategory, false);  
	      $("minimizeCategory_" + newCategoryId).observe("click", minimizeCategory, false);  
	      $("category_AddItem_" + newCategoryId).observe("click", addItem, false);  
	      
	      //TODO	       
	      recreateSortableListCategory();
	      
	    },
	    // Handle 404
	    on404: function(t) {
	        alert('Error 404: location "' + t.statusText + '" was not found.');
	    },
	    // Handle other errors
	    onFailure: function(t) {
	        alert('Error ' + t.status + ' -- ' + t.statusText);
	    }
	}
	new Ajax.Request('/lib/services/addcategory.php', opt);	
	
	addingCategory = false;
}

function cancelAddCategory(event)
{
	var categoryList = $("newMenuList");	
	var categoryLi = $("newCategoryLi");	
	
	categoryList.removeChild(categoryLi);
	
	addingCategory = false;	
}