function updateSlotInput()
{
	var slotNames = Array('lfm_slot1', 'lfm_slot2', 'lfm_slot3', 'lfm_slot4');
	for (var currSlot = 0; currSlot < slotNames.length; currSlot++)
	{
		var slotDom = $('td#' + slotNames[currSlot]);
		if (!slotDom.hasClass('hidden'))
		{
			var selectedClasses = new Array();
			var classList = Array('Death Knight', 'Druid', 'Hunter', 'Mage', 'Paladin', 'Priest', 'Rogue', 'Shaman', 'Warlock', 'Warrior');
			for (var classIndex = 0; classIndex < classList.length; classIndex++)
			{
				var className = classList[classIndex];
				var classNameNoSpaces = className.split(' ').join('');
				var lowerName = '.' + classNameNoSpaces.toLowerCase() + '_on';
				if (slotDom.find(lowerName).length)
				{
					var talOneName = '.' + classNameNoSpaces + '-t0_on';
					var talTwoName = '.' + classNameNoSpaces + '-t1_on';
					var talThreeName = '.' + classNameNoSpaces + '-t2_on';
					var foundOne = slotDom.find(talOneName).length;
					var foundTwo = slotDom.find(talTwoName).length;
					var foundThree = slotDom.find(talThreeName).length;
					if (foundOne && foundTwo && foundThree)
						selectedClasses.push(className);
					else if (!foundOne && !foundTwo && !foundThree)
						selectedClasses.push(className);
					else
					{
						if (foundOne)
							selectedClasses.push(className + '-t0');
						if (foundTwo)
							selectedClasses.push(className + '-t1');
						if (foundThree)
							selectedClasses.push(className + '-t2');
					}
				}
			}
			slotDom.find('input').val(selectedClasses.join(','));	
		}
	}
}

function toggleClickedClass(domObject, className, onlyOne)
{
	var hasChanged = false;
	if (domObject.hasClass(className + '_off')) 
	{
		hasChanged = true;
		domObject.removeClass(className + '_off');
		domObject.addClass(className + '_on');
		domObject.parent('td').parent('tr').next().children('td').children('.' + className + '_tals').removeClass('hidden');
		updateSlotInput();
	}
	else if(domObject.hasClass(className + '_on'))
	{
		hasChanged = true;
		domObject.removeClass(className + '_on');
		domObject.addClass(className + '_off');
		domObject.parent('td').parent('tr').next().children('td').children('.' + className + '_tals').addClass('hidden');
		updateSlotInput();
	}
	
	if (hasChanged && onlyOne)
	{
		var classList = Array('deathknight', 'druid', 'hunter', 'mage', 'paladin', 'priest', 'rogue', 'shaman', 'warlock', 'warrior');
		for (var classIndex = 0; classIndex < classList.length; classIndex++)
		{
			var curClassName = classList[classIndex];
			if (className != curClassName)
			{
				var classDom = $('.' + curClassName + '_on');
				if (classDom.length)
				{
					classDom.removeClass(curClassName + '_on');
					classDom.addClass(curClassName + '_off');
					classDom.parent('td').parent('tr').next().children('td').children('.' + curClassName + '_tals').addClass('hidden');
				}
			}
		}
		change_arena_recruit_page();
	}
}

function toggleClickedTalent(domObject, className, onlyOne)
{
	var changedIndex = 0;
	var hasChanged = false;
	for (var talIndex = 0; talIndex < 3; talIndex++)
	{
		var onClass = className + '-t' + talIndex + '_on';
		var offClass = className + '-t' + talIndex + '_off';
		if (domObject.hasClass(offClass)) 
		{
			changedIndex = talIndex;
			hasChanged = true;
			domObject.removeClass(offClass);
			domObject.addClass(onClass);
			updateSlotInput();
		}
		else if (domObject.hasClass(onClass))
		{
			changedIndex = talIndex;
			hasChanged = true;
			domObject.removeClass(onClass);
			domObject.addClass(offClass);
			updateSlotInput();
		}
	}
	
	if (hasChanged && onlyOne)
	{
		var classList = Array('DeathKnight', 'Druid', 'Hunter', 'Mage', 'Paladin', 'Priest', 'Rogue', 'Shaman', 'Warlock', 'Warrior');
		for (var classIndex = 0; classIndex < classList.length; classIndex++)
		{
			var curClassName = classList[classIndex];
			if ($('.' + curClassName.toLowerCase() + '_on').length)
			{
				for (var talIndex = 0; talIndex < 3; talIndex++)
				{
					if ((className != curClassName) || (talIndex != changedIndex))
					{
						var talOnClass = curClassName + '-t' + talIndex + '_on';
						var talDom = $('.' + talOnClass);
						if (talDom.length)
						{
							talDom.removeClass(talOnClass);
							talDom.addClass(curClassName + '-t' + talIndex + '_off');
						}
					}
				}
			}
		}
		change_arena_recruit_page();
	}
}

function change_arena_recruit_page()
{
	var recruitType = $('#recruittype').val();
	var bracketName = $('#searchbracket').val();
	var factionName = $('#searchfaction').val();
	var whereName = $('#searchregion').val();
	var serverName = $('#searchserver').val();
	var serverType = $('#searchservertype').val();
	if (serverName != 'All')
		whereName = serverName;
	
	var locString = 'http://www.arenajunkies.com/recruit/' + recruitType + '/';
	if (bracketName != 'All')
		locString += bracketName + '/';
	if (factionName != 'All')
		locString += factionName + '/';
	if (whereName != 'All')
		locString += whereName + '/';
	if (serverType != 'All')
		locString += serverType + '/';
	if ($('#searchjunkie').attr('checked'))
		locString += '2k/';
	if ($('#searchtransfer').attr('checked'))
		locString += 'xfer/';

	var classList = Array('Death Knight', 'Druid', 'Hunter', 'Mage', 'Paladin', 'Priest', 'Rogue', 'Shaman', 'Warlock', 'Warrior');
	for (var classIndex = 0; classIndex < classList.length; classIndex++)
	{
		var curClassName = classList[classIndex];
		var curClassNameNoSpaces = curClassName.split(' ').join('');
		if ($('.' + curClassNameNoSpaces.toLowerCase() + '_on').length)
		{
			locString += curClassName + '/';
			for (var talIndex = 0; talIndex < 3; talIndex++)
			{
				if ($('.' + curClassNameNoSpaces + '-t' + talIndex + '_on').length)
					locString += 't' + talIndex + '/';
			}
		}
	}

	window.location = locString;
}

$(document).ready(function()
{
	$('#searchregion').change(function()
	{
		$('#searchserver').val('All');
		change_arena_recruit_page();
	});
	$('#searchserver').change(function()
	{
		$('#searchservertype').val('All');
		$('#searchregion').val('All');
		change_arena_recruit_page();
	});
	$('#searchservertype').change(function()
	{
		$('#searchserver').val('All');
		change_arena_recruit_page();
	});
	$('#searchbracket').change(function() { change_arena_recruit_page() });
	$('#searchfaction').change(function() { change_arena_recruit_page() });
	$('#searchjunkie').click(function() { change_arena_recruit_page() });
	$('#searchtransfer').click(function() { change_arena_recruit_page() });
	
	$('select#lfm_bracket').change(function ()
	{
		var lfmDom = $('select#lfm_num');
		var bracketNum = $(this).val();
		if (bracketNum == 2)
		{
			lfmDom.html('<option value="1">1</option>');
			lfmDom.change();
			
			$('input#lfm_class_slot2').val('');
			$('input#lfm_class_slot3').val('');
			$('input#lfm_class_slot4').val('');
		}
		else if (bracketNum == 3)
		{
			var selectNum = lfmDom.find('option:selected').val();
			if (selectNum > 2)
				selectNum = 2;
			lfmDom.html('<option value="1">1</option><option value="2">2</option>');
			lfmDom.find('option:nth-child(' + selectNum + ')').attr('selected', 'selected');
			lfmDom.change();
			
			$('input#lfm_class_slot3').val('');
			$('input#lfm_class_slot4').val('');
		}
		else if (bracketNum == 5)
		{
			var selectNum = lfmDom.find('option:selected').val();
			lfmDom.html('<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>');
			lfmDom.find('option:nth-child(' + selectNum + ')').attr('selected', 'selected');
			lfmDom.change();
		}
	});
	
	$('select#lfm_num').change(function ()
	{
		var lfmNum = $(this).val();
		var bracketVal = $('select#lfm_bracket').val();
		if (lfmNum == 1)
		{
			$('td#lfm_slot2').addClass('hidden');
			$('td#lfm_slot3').addClass('hidden');
			$('td#lfm_slot4').addClass('hidden');
			$('input#lfm_class_slot2').val('');
			$('input#lfm_class_slot3').val('');
			$('input#lfm_class_slot4').val('');
			
			for (var startNum = lfmNum + 1; startNum <= bracketVal; startNum++)
				$('td#lfm_class' + startNum).removeClass('hidden');
		}
		else if (lfmNum == 2)
		{
			$('td#lfm_slot2').removeClass('hidden');
			$('td#lfm_slot3').addClass('hidden');
			$('td#lfm_slot4').addClass('hidden');
			$('input#lfm_class_slot3').val('');
			$('input#lfm_class_slot4').val('');
		}
		else if (lfmNum == 3)
		{
			$('td#lfm_slot2').removeClass('hidden');
			$('td#lfm_slot3').removeClass('hidden');
			$('td#lfm_slot4').addClass('hidden');
			$('input#lfm_class_slot4').val('');
		}
		else if (lfmNum == 4)
		{
			$('td#lfm_slot2').removeClass('hidden');
			$('td#lfm_slot3').removeClass('hidden');
			$('td#lfm_slot4').removeClass('hidden');
		}
		
		for (var currNum = 1; currNum <= 5; currNum++)
		{
			if (currNum <= (bracketVal - lfmNum))
				$('select#lfm_class' + currNum).removeClass('hidden');
			else
				$('select#lfm_class' + currNum).addClass('hidden');
		}
	});
	
	if (!$('input#browseonly').length)
	{
		var onlyOne = false;
		if ($('#recruittype').length)
			onlyOne = true;
		$('div.large_classico').click(function ()
		{
			toggleClickedClass($(this), 'deathknight', onlyOne);
			toggleClickedClass($(this), 'druid', onlyOne);
			toggleClickedClass($(this), 'hunter', onlyOne);
			toggleClickedClass($(this), 'mage', onlyOne);
			toggleClickedClass($(this), 'paladin', onlyOne);
			toggleClickedClass($(this), 'priest', onlyOne);
			toggleClickedClass($(this), 'rogue', onlyOne);
			toggleClickedClass($(this), 'shaman', onlyOne);
			toggleClickedClass($(this), 'warlock', onlyOne);
			toggleClickedClass($(this), 'warrior', onlyOne);
		});
		$('div.talenticons').click(function ()
		{
			toggleClickedTalent($(this), 'DeathKnight', onlyOne);
			toggleClickedTalent($(this), 'Druid', onlyOne);
			toggleClickedTalent($(this), 'Hunter', onlyOne);
			toggleClickedTalent($(this), 'Mage', onlyOne);
			toggleClickedTalent($(this), 'Paladin', onlyOne);
			toggleClickedTalent($(this), 'Priest', onlyOne);
			toggleClickedTalent($(this), 'Rogue', onlyOne);
			toggleClickedTalent($(this), 'Shaman', onlyOne);
			toggleClickedTalent($(this), 'Warlock', onlyOne);
			toggleClickedTalent($(this), 'Warrior', onlyOne);
		});
	}

	// Force one to fix the inputs on a refresh
	$('select#lfm_bracket').change();
});