jQuery.extend(
{
	pseudoCombo: function(optionList, settings)
					{
					settings = jQuery.extend({
									defaultSelection: null, // overwritten if cookie is used for saving selection
									valAttribute: 'rel',
									selectionCssClass: 'selected',
									expandedCssClass: 'expanded',
									hoverCssClass: 'hover',
									cookie: null,
									directLinks: false,
									onSelectionChange : function(){},
									timeoutClose: 1000,
									comboOptionLabelVal: ''
								}, settings);
													
					var combo = optionList;
					var comboWrapper = combo.parent();
					
					combo.selection = null;
					combo.timer = null;
					
					combo.init = function()
							{
								var defaultSelection = (settings.cookie)?$.cookie(settings.cookie):settings.defaultSelection;
								
								combo.setItemEvents(combo.find('a'));
								
								var sel = (defaultSelection != null)?defaultSelection:combo.find('a:eq(0)').attr(settings.valAttribute);
								if(sel != settings.comboOptionLabelVal)
									combo.find('a[' + settings.valAttribute + '=' + settings.comboOptionLabelVal + ']').parent().remove();
									
								combo.updateSelection(sel);
								
								combo.hover(function(){clearTimeout(combo.timer); combo.addClass(settings.hoverCssClass)},
										function(){combo.timer = setTimeout(combo.collapse, settings.timeoutClose)})
							}
									
					combo.setItemEvents = function(items)
								{
									items.click(function()
											{
												var oLnk = $(this);
												combo.updateSelection(oLnk.attr(settings.valAttribute));
												settings.onSelectionChange(oLnk);
												if(settings.directLinks)
													return true
												return false;
											});
								}
									
					combo.updateSelection = function(val)
								{
									if(val != settings.comboOptionLabelVal)
									{
										var newSelection = combo.find('a[' + settings.valAttribute + '=' + val + ']').not('.' + settings.selectionCssClass)
													.clone(false)
													.addClass(settings.selectionCssClass)
													.unbind('click')
													.click(function()
															{
																combo.expandCollapse();
																return false;
															});	
															
										var oldSelection = combo.find('a.' + settings.selectionCssClass);
															
										if (oldSelection.size() > 0)
											oldSelection.replaceWith(newSelection);
										else
											$('<li></li>').append(newSelection).prependTo(combo);
													
										combo.selection = newSelection.attr(settings.valAttribute);
										
										combo.collapse();
									}
									else
									{
										var newSelection = combo.find('a[' + settings.valAttribute + '=' + val + ']')
													.addClass(settings.selectionCssClass)
													.unbind('click')
													.click(function()
															{
																combo.expandCollapse();
																return false;
															});
									}
								}
								
					combo.expandCollapse = function()
								{
									combo.toggleClass(settings.expandedCssClass);
									comboWrapper.toggleClass(settings.expandedCssClass);
								}
					combo.collapse = function()
								{
									combo.removeClass(settings.expandedCssClass);
									combo.removeClass(settings.hoverCssClass);
									comboWrapper.removeClass(settings.expandedCssClass);
								}
							
					combo.init();
				}
})