		var ControlMenu = {
				data     : null,
				appendTo : null, 
				types    : 
				{
					model : "NewCarModelItem",
					trim  : "NewCarTrimItem" 
				},
				
				items :
				{
					model : new Array(),
					trim  : new Array()
				},
				
				initialize : function(data, parentId, appendTo)
				{
					// Populate internal data
					this.setData(data);
					
					// Set AppendTo Element
					this.appendTo = dojo.byId(appendTo);

					// Populate Model items
					this.setModelItems();

					// Populate Trim items
					this.setTrimItems();
					
					// Generate Model Menu
					this.generateModelMenu(parentId);
				},
				
				setData : function(data)
				{
					this.data = data;
				},
				
				getData : function()
				{
					return this.data;
				},

				addModelItem : function(data)
				{
					this.items.model.push(data);
				},
				
				setModelItems : function()
				{
					var object = this;
					
					dojo.forEach(this.getData(), function(item)
					{
						if(item.Type === object.types.model)
						{
							object.addModelItem(item);
						}
					});
				},

				getModelItems : function()
				{
					return this.items.model;
				},
				
				getFilteredModelItems : function(parentId)
				{
					var filtered = new Array();
					var data = this.getModelItems();
						dojo.forEach(data, function(item)
						{
							if(item.ParentId === parentId)
							{
								filtered.push(item);
							}
						});
						
					return filtered;
				},
				
				addTrimItem : function(data)
				{
					this.items.trim.push(data);
				},
				
				setTrimItems : function()
				{
					var object = this;
					
					dojo.forEach(this.getData(), function(item)
					{
						if(item.Type === object.types.trim)
						{
							object.addTrimItem(item);
						}
					});
				},
				
				getTrimItems : function()
				{
					return this.items.trim;
				},
				
				getFilteredTrimItems : function(parentId)
				{
					var filtered = new Array();
					var data = this.getTrimItems();
						dojo.forEach(data, function(item)
						{
							if(item.ParentId === parentId)
							{
								filtered.push(item);
							}
						});
						
					return filtered;
				},
				
				showTrimMenu : function(id, index)
				{
					var appendTo = this.appendTo;
					var modelId  = this.types.model + id;
					var trimId   = this.types.trim + id;
					
					var paddingTop	 = (dojo.style("MakeLogo", "height"));
					var appentHeight = (dojo.style(appendTo, "height") - paddingTop);
					var liTop   	 = (dojo.style(modelId, "height") * index + dojo.style(appendTo, "paddingTop"));
					var liHeight   	 = (dojo.style(modelId, "height"));
					var menuHeight   = (dojo.style(trimId, "height"));
					
					if(liTop + menuHeight > appentHeight)
					{
						dojo.style(trimId, 
						{
							marginTop : ((appentHeight - (liTop + menuHeight)) - liHeight) + "px"
						})		
					}
				},
				
				hideTrimMenu : function(id, index)
				{
					//console.log(id);
				},

				generateModelMenu : function(parentId)
				{
					var object = this;
					var makeUl = this.generateUlElement(this.types.model + parentId);
					var data = this.getFilteredModelItems(parentId);
						dojo.forEach(data, function(item, index)
						{
							var prefix = object.types.model;
							var over = function() 
							{ 
								object.showTrimMenu(item.Id, index) 
							};
							var out  = function()
							{ 
								object.hideTrimMenu(item.Id, index) 
							};
							var li   	   = object.generateLiElement(item, over, out, prefix);
							var trimUlMenu = object.generateTrimMenu(item.Id); 
							
							li.appendChild(trimUlMenu);
							makeUl.appendChild(li);
						});
						
					this.appendTo.appendChild(makeUl);
				},
				
				generateTrimMenu : function(parentId)
				{
					var object = this;
					var makeUl = this.generateUlElement(this.types.trim + parentId);
					var data = this.getFilteredTrimItems(parentId);
						dojo.forEach(data, function(item)
						{
							var prefix = object.types.trim;
							var over = function() 
							{ 
								return; 
							};
							var out  = function()
							{ 
								return; 
							};
							var li   = object.generateLiElement(item, over, out, prefix);
							makeUl.appendChild(li);
						});
						
					return makeUl;
				},
				
				generateUlElement : function(id)
				{
					var ul = document.createElement("ul");
						dojo.attr(ul, {
							id : id
						});
						
					return ul;
				},
				
				generateLiElement : function(data, over, out, prefix)
				{
					var prefix = (prefix !== undefined) ? prefix : "";
				
					var li = document.createElement("li");
						dojo.attr(li, {
							id 			: prefix + data.Id,
							onmouseover : over,
							onmouseout  : out
						});
					var a = document.createElement("a");
						dojo.attr(a, {
							href : data.URL							
						});
					var text = document.createTextNode(data.Title);
						a.appendChild(text);
						li.appendChild(a);	
					
					return li;
				}
		};