/***
	Request the seleted item to be added to the card
	
	@param frmId - the form id that encapsulates the add controls for the item
					being added
*/
function reqAddItem(frmId)
{
	var addItemRequest;
	var addItemUrl;
	var frmAddItem;

	frmAddItem = $(frmId);
	
	// create the ajax request
	addItemrequest = new Ajax.Request(frmAddItem.action, {onFailure: resItemAddFailed, onSuccess: resItemAddSuccessful, parameters: frmAddItem.serialize()});
	$(frmId).style.display = 'none';
	$(frmId+'loading').style.display = 'block';
}

/***
	The response to the item add request is successful, so now we want co
	clear the box and display a message to the user that states that the 
	item has been added successfully. This function is called only upon
	successful response and therefore the response paramter is not used.
	
	@response - the response of the ajax call.
*/
function resItemAddSuccessful(response)
{
	var responseData = response.responseText.split(String.fromCharCode(30));

	var itemId = responseData[0];
	var errors = responseData[1].split(String.fromCharCode(29));
	var errorMessage = "";

	var prodAddPanel = $("productAdd" + itemId);
	var prodAddFailPanel = $("productAddFailMessage" + itemId);

	prodAddFailPanel.innerHTML="";
	prodAddFailPanel.className="";

	// clear the panels and any messages that might be being displayed currently
	prodAddFailPanel.innerText = "";

	for(var count=0; count < errors.length - 1; count++)
	{
		var keyValuePair = errors[count].split(String.fromCharCode(28));
		errorMessage += itemErrorMessages(keyValuePair[0], keyValuePair[1]) + "<br />";
	}


	if(errorMessage.length == 0)
	{
		prodAddPanel.className="addSuccessful";
		prodAddPanel.innerHTML = "Item added successfully.";
	}
	else
	{
		prodAddFailPanel.className="addFailed";
		prodAddFailPanel.innerHTML = errorMessage;
		$('frmItem'+itemId+'loading').style.display = 'none';
		$('frmItem'+itemId).style.display = 'block';
	}

}

function resItemAddFailed(response)
{
	alert("An unknown error has occurred while trying to add the item.");
}

function itemErrorMessages(msg, value)
{
	switch(msg)
	{
		case "required":
			"Required field";
		case "min":
			return "The minimum order quanitity for this item is " + value;
		case "numeric":
			return "Quantity must be a number";
		default:
			return "Unknown error";
	}
}



if($('nav-main'))
{
	var navlist = $('nav-main').getElementsByTagName('li');

	for(var c=0; c<navlist.length; c++)
	{
			navlist[c].order = c;
			navlist[c].id = 'nav'+c;
			// mouse events to hide the border of previous element
			navlist[c].onmouseover = function(e)
			{
				var prev = this.order - 1;
				var next = this.order + 1;

				// select the border colour for current node
				this.childNodes[0].style.borderColor = '#43A842';

				// select the border colour for previous node
				if($('nav'+prev))
				{
					if(this.className == 'active')
					$('nav'+prev).childNodes[0].style.borderColor = '#1C3E95';
					if(this.className != 'active' && $('nav'+prev).className == 'active')
					$('nav'+prev).childNodes[0].style.borderColor = '#43A842';

					if($('nav'+next))
					if(this.className != 'active' && $('nav'+next).className == 'active')
					$('nav'+prev).childNodes[0].style.borderColor = '#1C3E95';

					if($('nav'+next))
					if(this.className != 'active' && $('nav'+next).className != 'active' && $('nav'+prev).className != 'active')
					$('nav'+prev).childNodes[0].style.borderColor = '#1C3E95';

					if(this.className != 'active' && !$('nav'+next) && $('nav'+prev).className != 'active')
					$('nav'+prev).childNodes[0].style.borderColor = '#1C3E95';

				}
				
			}
			navlist[c].onmouseout = function(e)
			{
				var prev = this.order - 1;
				var next = this.order + 1;

				// select the border colour for current node
				if(this.className == 'active') 
				this.childNodes[0].style.borderColor = '#43A842';

				if(this.className != 'active')
				{
					this.childNodes[0].style.borderColor = '#C7CCE0';

					if($('nav'+prev))
					if($('nav'+prev).className == 'active')
					this.childNodes[0].style.borderColor = '#C7CCE0';

					if($('nav'+next))
					if($('nav'+next).className == 'active')
					this.childNodes[0].style.borderColor = '#1C3E95';
				}

				// select the border colour for previous node
				if($('nav'+prev))
				{
					$('nav'+prev).childNodes[0].style.borderColor = '#C7CCE0';

					if(this.className == 'active')
					$('nav'+prev).childNodes[0].style.borderColor = '#1C3E95';
					if($('nav'+next))
					if(this.className != 'active' && $('nav'+next).className =='active')
					$('nav'+prev).childNodes[0].style.borderColor = '#C7CCE0';
				
					if(this.className != 'active' && $('nav'+prev).className =='active')
					$('nav'+prev).childNodes[0].style.borderColor = '#43A842';
				
				}	
			}

			// hide the border of previous element if current element already active
			var prev = navlist[c].order - 1;
			if($('nav'+prev))
			{
				if(navlist[c].className.match(/active/))
				$('nav'+prev).childNodes[0].style.borderColor = '#1C3E95';
			}

	}
}


