(function($){$(function(){

var z = 999;

jQuery.fn.customSelect = function(opt) {
	return this.each(function(){
		parentNode = $(this).parent()[0].nodeName.toLowerCase();
		if(!(parentNode == 'div' && $(this).parent().hasClass('customSelectContainerDiv'))) {
			/* Create Div */
			div = document.createElement('div');
			div.className = 'customSelectContainerDiv';
			$(this).parent()[0].appendChild(div);
			div.appendChild(this);
				
		}
		else {
			if(opt=='refresh') {
				z = 998;
				opt = {}
				opt.mainClass = $(this).parent().find('dl')[0].className;		
			}
			/* Clear Old Div */
			$(this).parent().removeClass('enhanced');	
			$(this).parent().find('.'+opt.mainClass).remove();
		}
		build(this,opt);
	});
};

function checkExternalClick(event)
{
	if ($(event.target).parents('.activedropdown').length === 0)
	{
		jQuery('.activedropdown').removeClass('activedropdown');
		jQuery('.options').hide();
	}
};

function build(sel,opt) {
	
	$(document).mousedown(checkExternalClick);
	$(sel).each(function() 
	{
		if(!$(this).parent().hasClass('enhanced'))
		{
			targetselect = $(this);
			targetselect.hide();
			// set our target as the parent and mark as such
			var target = targetselect.parent();
			target.addClass('enhanced');

			// prep the target for our new markup
			target.append('<dl class="'+opt.mainClass+'"><dt><a class="dropdown_toggle" href="#"></a></dt><dd><div class="options"><ul></ul></div></dd></dl>');
			target.find('.'+opt.mainClass).css('zIndex',z);
			z--;

			// we don't want to see it yet
			target.find('.'+opt.mainClass).find('.options').hide();

			// parse all options within the select and set indices
			var i = 0;
			targetselect.find('option').each(function() 
			{
				// add the option
				target.find('.options ul').append('<li><a href="#"><span class="value">' + $(this).text() + '</span><span style="display:none;" class="index">' + i + '</span></a></li>');

				// check to see if this is what the default should be
				if($(this).attr('selected') == true)
				{
					targetselect.parent().find('a.dropdown_toggle').append('<span></span>').find('span').text($(this).text());
				}
				i++;
			});
		}
	});


	// let's hook our links, ya?
	jQuery('a.dropdown_toggle').live('click', function() 
	{
		var theseOptions = $(this).parent().parent().find('.options');
		if(theseOptions.css('display')=='block')
		{
			jQuery('.activedropdown').removeClass('activedropdown');
			theseOptions.hide();
		}
		else
		{
			theseOptions.parent().parent().addClass('activedropdown');
			theseOptions.show();
		}
		return false;
	});

	// bind to clicking a new option value
	jQuery('.options a').live('click', function(e)
	{
		jQuery('.options').hide();

		var enhanced = $(this).parent().parent().parent().parent().parent().parent();
		var realselect = enhanced.find('select');
		// set the proper index
		
		realselect[0].selectedIndex = $(this).find('span.index').text();
		realselect[0].value = realselect[0].item(realselect[0].selectedIndex).value;
		
		// update the pseudo selected element
		enhanced.find('.dropdown_toggle').empty().append('<span></span>').find('span').text($(this).find('span.value').text());
		if(typeof realselect[0].onchange == 'function') {
			onchangestr = String(realselect[0].onchange);
			onchangestr = onchangestr.replace('onchange','');
			onchangestr = onchangestr.replace('this','this_2');
			var fn = new Function("this_2", "("+onchangestr+")();");
			fn(realselect[0]);
		}
		return false;
	});
		
}
})})(jQuery);

var lastSelectRigthClick = false;
function Show_This_Select()
{
	var node = this.previous(0).down(0).down(0).next(0);
	var text = node.down(0).next(0).down(0);
	
	if( lastSelectRigthClick == node.previous(0).id ){lastSelectRigthClick = false;return false;}
	
	if( node.tagName.toLowerCase() == 'dl' )
	{
		if( text.style.display == 'none' )
		{
			node.addClassName('activedropdown');
			text.setStyle({display: 'block'});
			lastSelectRigthClick = node.previous(0).id;
		}
		else
		{
			node.removeClassName('activedropdown');
			text.setStyle({display: 'none'});
		}
	}
}

function findSelectRight()
{
	var myws = $$("div");
	for (i=0;i<myws.length;i++)
	{
		if( myws[i].className == 'right' )
		{
			myws[i].onclick = Show_This_Select;	
		}
	}
}


