(function($){
 
    $.fn.extend({
         
        vcombo: function(options) {
 
            //Set the default values, use comma to separate the settings, example:
            var defaults = {
                fspeed : 300
            }
//            var keyCode = $.ui.keyCode;
//            var sysKeys = [keyCode.UP, keyCode.DOWN, keyCode.RIGHT, keyCode.LEFT, keyCode.PAGE_UP, keyCode.PAGE_DOWN, keyCode.HOME, keyCode.END, keyCode.BACKSPACE, keyCode.DELETE, keyCode.TAB]
            
            var options =  $.extend(defaults, options);
            
            var closeIt = function(a,panel) {
            	panel.fadeOut(options.fspeed);
            	panel.css('z-index','auto');
    			a.removeClass('rf-a-with-drop');
    			panel.ison = false;
            };
            
            var getMaxZ = function(){
                var maxZ = Math.max.apply(null,$.map($('body > *'), function(e,n){
                    if($(e).css('position')=='absolute')
                         return parseInt($(e).css('z-index'))||1 ;
                    })
	             );
	             return maxZ;
	         };
            
            return this.each(function() {
                
                
                var input = $(this);
                
                if (!input.vcomboed) {
                	
                	input.vcomboed = true;
                	
                	var panel = input.children().first();
                	panel.addClass('vcombopanel');
                	var iheight = input.height();
                	$('body').append(panel);
                	
                	input.prepend("<a class='rf-a' href='#'><span>" + input.attr('placeholder') + "</span><div class='rf-btn'><b></b></div></a>");
                	input.append('<input type="hidden">');
                	
                	var vel = input.children('input');
                	vel.attr('name',input.attr('fname'));
                	
                	var a = input.children('a');
                	var label = a.children('span');
                	panel.css('top',iheight+a.height());
                	panel.hide();
                	
                	a.click(function(){
                		if (!panel.ison) {
                			a.addClass('rf-a-with-drop');
                			panel.css('z-index',getMaxZ()+10);
                			panel.fadeIn(options.fspeed);
	                		panel.ison = true;
	                		var ipos = input.offset();
	                		panel.offset({top:ipos.top+input.height(),left:ipos.left});
	                		
                		} else {
                			closeIt(a,panel);
                		}
                		
                	});
                	
                	a.focusout(function() {
                		setTimeout(function(){closeIt(a,panel);},100);
                		
                	});
                	
                	panel.find('a').each(function() {
                		var l = $(this); 
                		l.click(function(){
                			closeIt(a,panel);
                			
                			label.html(l.html());
                			vel.attr('value',l.attr('val'));
                		});
                		
                	});
                	
                	
                	
               
                }
            });
        }
    });
     
})(jQuery);
