(function($) {
  	$.fn.customDropdown = function(params) {
		$.fn.customDropdown.defaults = {
			start: 0,
			boxClass: 'custom-dd',
			bgClass: 'custom-dd-bg',
			itemClass: 'custom-dd-item',
			defaultIndex: '900',
			hoverIndex: '1000',
			offsetTop: 31
		};
		var par = $.extend({}, $.fn.customDropdown.defaults, params);
		return this.each(function(){
			var inputname = $(this).attr('name');
			var inputid = $(this).attr('id');
			var val = $(this).val();
			$(this).removeAttr('name');
			$(this).hide();
			var newselect = $('<div class="'+par.boxClass+'" id="dd_'+inputid+'"></div>')
				.css('width',$(this).css('width'))
				.css('z-index',par.defaultIndex);
			var innertext = $(this).find('option:selected').text();
			var i = 0;
			$(newselect).html(innertext);
			var newinput = $('<input type="hidden" name="'+inputname+'" id="ipt_'+inputid+'" value="'+val+'" />');
			var dropdownspan = $('<span></span>').css('position','relative').css('z-index',par.defaultIndex);
			var bg = $('<div class="'+par.bgClass+'" id="bg_'+inputid+'"></div>')
				.css('display','none')
				.css('position','absolute')
				.css('top',par.offsetTop)
				.css('left','0')
				.css('width',$(this).outerWidth())
				.css('z-index',par.hoverIndex);
			$(dropdownspan).append(newselect);
			$(dropdownspan).append(newinput);
			$(dropdownspan).addClass($(this).attr('class'));
			$(this).find('option').each(function(){
				var stp = $(this).parent().find('option').size();
				if(i>=par.start) {
					var a = $('<a class="'+par.itemClass+'" rel="'+$(this).val()+'" href="#">'+$(this).text()+'</a>');
					$(bg).append(a);
				}
			i++;
			});
			$(dropdownspan).append(bg);
				$('#dd_'+inputid).live('click',function(){
				$('.'+par.bgClass).hide();
				$('#bg_'+inputid).show();
			});
			$('html').unbind().click(function(){
				$('.'+par.bgClass).hide();
			});
			$(this).wrap(dropdownspan);
			$('#bg_'+inputid+' .'+par.itemClass).click(function(){
				//console.log($(this).text());
				$('#dd_'+inputid).html($(this).text());
				$('#ipt_'+inputid).val($(this).attr('rel'));
				$('.'+par.bgClass).hide();
				return false;								
			});
		});
  	};
})(jQuery);
