(function($) {
	var mDropDown = function(elem, options) {
		var THIS = this;
		var optId = 0;
        var hasFocus = false;
		var settings = $.extend( {
				selectOptions : [],
				callBack : null
			}, options || {});
		var optionId = null;
        var selectOptions = $('#'+ $(elem).attr('id') +'_options');
        
		var addEvents = function() {
           
			$(elem).click(displaySortoptions).css('cursor', 'pointer');
			selectOptions.mouseout(function(e) {
					if (!e) var e = window.event;
					var relTarget = e.relatedTarget || e.toElement.up('div').id;
					if ($($(relTarget).parents()[1]).attr('id') != $(selectOptions).attr('id')) hideMenu();
			});	
            setOptionEvents();		
		}
			
        var hideMenu = function(evt) {
      		if (hasFocus == false) {
                $('#'+ $(elem).attr('id') +'_options').hide();
            } 
        };
        
        var displaySortoptions = function(evt) {
            var selectPositions = $(elem).position();
            var selectTop = parseInt(selectPositions.top);
            var selectLeft = parseInt(selectPositions.left);
            var selectWidth = parseInt($(elem).width());
            var selectHeight = parseInt($(elem).height());
            
            selectOptions.css({	position: 'absolute',
				                width: selectWidth +'px',
											
								borderLeft: '1px',
								borderRight: '1px',
								zIndex: '1000',
								border: '0px 1px',
								padding: '0px',
								top: parseInt(selectTop + selectHeight+ 10) + 'px',
								left: selectLeft + 'px'
							});
	       selectOptions.show();

	   };
       
       var setOptionEvents = function() {
       
            selectOptions.find('ul li').each(function(idx, li) {
                
                    $(li).mouseover(function(evt) {
                        $(evt.currentTarget).addClass('selected');
                        optionId = $(evt.currentTarget).attr('title');
                    });
                    $(li).mouseout(function(evt) {
                        $(evt.currentTarget).removeClass('selected');
                    });
                    $(li).click(selectOption);
                
            });
       };
       
       var selectOption = function() {
            settings.callBack($(elem).attr('id'), optionId);
            selectOptions.find('ul li').each(function(idx, li) {
                if ($(li).hasClass('selected')) $(li).removeClass('selected');
            });
            selectOptions.find('ul li[title='+ optionId +']').addClass('selected');
            $('#'+ $(elem).attr('id') + '_selection').html(selectOptions.find('ul li[title='+ optionId +']').html());
            hideMenu();
       };

       addEvents();

		
	}
	
	$.fn.dropdown = function(options) {
		return this.each(function() {
			var element = $(this);
			
			if (element.data('dropdown')) return;
			
			var MenuDropDown = new mDropDown(this, options);
			
			element.data('dropdown', MenuDropDown);
			
		});
	};
	
})(jQuery);
