(function($){
	$.fn.DropDown = function(options) {
		var MianCssClassName = "";
		
		var defaults = { 
			CssClassName: "fdd2div_default",
			OpenStatus: "0",
			AnimationSpeed: "normal",
			hrefTemplate: "{VALUE}"
		}
		
		var options       = jQuery.extend(defaults, options);
		MianCssClassName  = options.CssClassName;

		jQuery(this).addClass(MianCssClassName);

		var unique_id     = jQuery(this).attr("id");
		var form          = jQuery(this);
		
		var SelectName    = jQuery(form).find('select').attr('name');
		var SelectOptions = jQuery(form).find('option');
		
		var main_option   = "";
		var child_options = "";
		
		SelectOptions.each(function(n, option) {
			if(jQuery(option).attr('selected') == 'selected' || jQuery(option).attr('selected') == 'true' || jQuery(option).attr('selected') == true) { 
				main_option = '<a href="javascript:;" class="' + MianCssClassName + '_main_link collapsed">' + option.firstChild.nodeValue + '</a>' + "\n";
			}
		});
		
		SelectOptions.each(function(n, option) {
			var OptionValue = "";
			
			if(jQuery(option).attr('value') != "") {
				OptionValue = jQuery(option).attr('value');
			}else {
				OptionValue = option.firstChild.nodeValue;
			}
			if(n == 0 && main_option == "") {
				main_option = '<a href="javascript:;" class="' + MianCssClassName + '_main_link collapsed">' + option.firstChild.nodeValue + '</a>' + "\n";
			}else {
				child_options += '<li><a href="' + ((OptionValue == 0 || OptionValue == '...') && option.firstChild.nodeValue == '...' ? "javascript:;" : defaults.hrefTemplate.replace("{VALUE}", OptionValue).replace("{LABEL}", option.firstChild.nodeValue)) + '" class="' + MianCssClassName + '_option_link">' + option.firstChild.nodeValue + '</a></li>' + "\n";
			}
		});
		
		var menu = main_option + '<ul class="' + MianCssClassName + '_ul_list" style="position:absolute">' + child_options + '</ul>';
		jQuery(this).html(menu);

		var child_options = "#" + unique_id + " ul";
		var main_option   = "#" + unique_id + " a." + MianCssClassName + "_main_link";
		
		if(defaults.OpenStatus==0) {
			jQuery(child_options).hide();
		}else {
			jQuery(main_option).attr("class", MianCssClassName + "_main_link expanded");
		}
			 
		jQuery("body").mousedown( function (event) {
			if(jQuery((event.target || event.srcElement)).is("[class^=" + MianCssClassName + "]")) { return; }
			jQuery(child_options).slideUp(defaults.AnimationSpeed);
			jQuery(main_option).attr("class", MianCssClassName + "_main_link collapsed");
		});
				 
		jQuery(main_option).click(function () {
			if( jQuery(this).attr("class") == MianCssClassName+"_main_link collapsed" ) {
				jQuery(this).attr("class", MianCssClassName+"_main_link expanded");
			}else {
				jQuery(this).attr("class", MianCssClassName+"_main_link collapsed");
			}
			
			//jQuery(child_options).fadeIn(defaults.AnimationSpeed)
			jQuery(child_options).slideToggle(defaults.AnimationSpeed);
			
			return false;
		});

	}
})
(jQuery);
