﻿$.fn.dropdown = function(options)
{   
	var defaults =
  {
		menu : "",
		label : "",
		dropdownbuttonclicked : null,
		selectionchanged : null
  }
  
  var options = $.extend(defaults, options);
  var selectedValue="";
  
  function ClearItems()
		{
			$("#" + options.menu).children().remove();
		}
  
  return this.each(function()
  {   
  
		// dropdown button click
		$(this).click(DoDropDown);
		
		// label click
		$("#" + options.label).click(DoDropDown);
		
		
		function DoDropDown()
		{
				var obj;
				
				if ($(this).attr("disabled")==true)
				{
				return;
				}
				
//				if ($("#" + options.menu).css("display")!="none")
//				{
//					$("#" + options.menu).css("display","none");
//					return false;
//				}
				
				if (options.label!="")
					obj=$("#" + options.label);
				else
					obj=$(this);
				
				var pos				= obj.position();
				var menuTop		= pos.top+obj.height();
				var menuLeft	= pos.left;

				$("#" + options.menu).css("left",menuLeft).css("top",menuTop).show();

				// exec callback function
				if (typeof(options.dropdownbuttonclicked)=="function")
					options.dropdownbuttonclicked();
					
					document.onmousedown=capturedclick;
				return false;
		}
		
		
		function capturedclick()
		{
			var parent=event.srcElement.parentNode;
			document.onmousedown=null;

			if (parent!=document.getElementById(options.menu))
				$("#" + options.menu).hide();
			else
				event.srcElement.click();
			
			
		}
		
		function ClearItems()
		{
			$("#" + options.menu).children().remove();
		}
		
		
		
		function ItemClicked()
		{
			var obj = $(this);
			
			$(this).removeClass("MenuItemSelected");
		
			//var dropdown = $(obj.attr("dropdown"));
			$("#" + options.label).html(obj.html()).css("color",obj.css("color"));
		
			$("#" + options.menu).hide();
			if (typeof(options.selectionchanged)=="function")
				options.selectionchanged( obj.attr("xvalue"));
		}
		
		// items
		var obj=$(this);
		var first=true;
  	$("#" + options.menu ).children().each(
			function()
			{
				if (first==true)
				{
					$("#" + options.label).html($(this).html());

					first=false;
					$(this).attr("className","FirstMenuItem");
				}
				else
					$(this).attr("className","MenuItem");

				$(this).attr("dropdown",obj)
				$(this).mouseover(function(){$(this).addClass("MenuItemSelected");});
				$(this).mouseout(function(){$(this).removeClass("MenuItemSelected");});
				$(this).click(ItemClicked);
			}
		);
  
   }
   );
   
    
}; 