function market_twist(element)
{
	element.toggleClassName('twisted');
	var key = element.id.split('-')[1];

	var details = $("details-" + key);
	if (details == null)
	{
		// Add the row with a "loading" graphic and request the contents.
		var artist_row  = $("row-" + key);
		var details_row = new Element('tr');
		var details_col = new Element('td', {colspan:"100"});
		var contents    = new Element('div', {id:"details-" + key, className:"details"});
		
		details_col.insert(contents);
		details_row.insert(details_col);
		artist_row.insert({after:details_row});
		ourBusy(contents);
		Effect.BlindDown(contents, {duration:0.1});
		
		new Ajax.Updater(contents.id, element.href, {onComplete:function() {market_setup(contents.id);}});
	}
	else
	{
		Effect.toggle(details, 'blind', {duration:0.1});
	}
}

function market_menu(element, value)
{
	if (value == 0)
		return;
		
	if (value == 3 || value == 6)
	{
		// Disable the select prior to showing the confirm dialog.
		element.setValue(this.lastValue);
		element.disable();
		element.stopObserving();
		var book;
		if (value == 3)
			book = confirm('Are you sure you want to book this artist?');
		else if (value == 6)
			book = confirm('Are you sure you want to remove this artist from all of your gig applicant lists?');
		if (!book)
		{
			// Enable and restore the observer when cancelling.
			element.enable();
			new Form.Element.EventObserver(element, market_menu);
			return;
		}
		// Restore the state prior to submitting the request.
		element.setValue(value);
		element.enable();
	}
	
	var form = element.up('form');
	form.request();
	element.setValue(this.lastValue);
	element.disable();
}

function market_setup(container_id)
{
	var container = $(container_id);
	var twists = container.select('.applicant-twist');
	twists.each(function(twist)
	{
		twist.onclick = function() {return false;}
		twist.title = 'Show/Hide Details';
		twist.observe('click', function (evt) {market_twist(evt.element());});
	});
	var menus = container.select('.applicant-menu');
	menus.each(function(menu)
	{
		new Form.Element.EventObserver(menu, market_menu);
	});
}
