/*
 * Custom DropDown (for jQuery) v 0.0.1
 * Codded by: peter.eliot.brown@gmail.com
 */
(function($) {
	
	$.fn.dropdown = function() {
	
	 return this.each(function(){
	 
		var inputObj =$(this);
		var inpValue;
		var objW ;
		var dropdown;
		var label;
		var liste;
		var btnW;
		
		function initList(){
			var text = inputObj.children('option:selected').text();
			inpValue = inputObj.val();
			objW = inputObj.outerWidth();
			var objCl = inputObj.attr('class');
			dropdown = $('<div class="ui-dropdown"></div>');
			dropdown.addClass(objCl);
			label = $('<a class="label"><span class="value">'+text+'</span><span class="arrow"></span></a>');
			label.css('width',objW);
			liste = $('<ul></ul>');
			liste.css('width',objW);
			inputObj.hide();
			inputObj.parent().append(dropdown);
			dropdown.append(label);
			dropdown.append(liste);
			btnW = label.find('span.arrow').outerWidth()+5; // !!! After Append !!
			label.find('span.value').css('width',objW-btnW);
			label.click(function(){
				if(dropdown.find('ul').is(":visible")) closeList();
				else openList()
			});
			
			inputObj.children().each(function (i) {
				var option = $('<li>'+$(this).text()+'</li>');
				if( $(this).is(':selected') ) option.addClass('selected');
				else if($(this).attr('disabled')) option.addClass('disabled');
				option.appendTo(liste);
			});
			
			liste.children().each(function () {
				$(this).click(function() {
					if(!$(this).hasClass('disabled') && !$(this).hasClass('selected')){
						var index = $(this).index();
						var option = $(inputObj.children().get(index));
						liste.children().removeClass('selected');
						$(this).addClass('selected');
						inputObj.children().removeAttr('selected');
						option.attr('selected','selected');
						label.find('span.value').html(option.text());
						closeList();
						inputObj.change();
					}else{
						closeList();
						return false;
					}	
				});
			});
		}
		
		function openList(){
			$(document).mousedown(function(event) {
				var target = $(event.target);
				if (!target.parents().andSelf().is('.ui-dropdown')) {
					closeList();
				}
			});
			dropdown.find('a').addClass('opened');
			dropdown.find('ul').css('z-index',9999).show();
		}
		
		function closeList(){
			$(document).unbind('mousedown');
			dropdown.find('ul').css('z-index',1).hide();
			dropdown.find('a').removeClass('opened');
		}

		initList();
	
	});
	
	}
})(jQuery);
