function $(id)
{
	return document.getElementById(id);
}
String.prototype.toInnerHTML = function()
{
	return this.replace(/[&]/g, '&amp;').replace(/[<]/g, '&lt;').replace(/[>]/g, '&gt;');
}
function class_add(el, class_name)
{
	el.className += ' ' + class_name;
}
function class_remove(el, class_name)
{
	var re = new RegExp('\s*' + class_name + '\s*');
	el.className = el.className.replace(re, ' ');
}
function event_members_member_click(id)
{
	var el;
	if (el = $('event_members_member_selection_' + id))
	{
		if (event_members_groups_members[event_members_groups_current][id])
		{
			delete event_members_groups_members[event_members_groups_current][id];
			el.style.display = 'none';
		}
		else
		{
			event_members_groups_members[event_members_groups_current][id] = true;
			el.style.display = 'block';
		}
	}
}
function _event_members_deactivate_tab()
{
	if (event_members_groups_members[event_members_groups_current])
	{
		class_remove($('event_members_group_tab_' + event_members_groups_current), 'this');
		var id;
		for (id in event_members_groups_members[event_members_groups_current])
		{
			var sel_el = $('event_members_member_selection_' + id);
			if (sel_el)
			{
				sel_el.style.display = 'none';
				$('event_members_member_cb_' + id).checked = false;
				$('event_members_member_cb_' + id).disabled = false;
			}
		}
		$('event_members_base_team_select').selectedIndex = 0;
	}
}
function _event_members_activate_tab()
{
	if (event_members_groups_members[event_members_groups_current])
	{
		class_add($('event_members_group_tab_' + event_members_groups_current), 'this');
		var id;
		for (id in event_members_groups_members[event_members_groups_current])
		{
			var sel_el = $('event_members_member_selection_' + id);
			if (sel_el)
			{
				sel_el.style.display = 'block';
				$('event_members_member_cb_' + id).checked = true;
				if (undeletable_members[event_members_groups_current] && undeletable_members[event_members_groups_current][id])
				{
					$('event_members_member_cb_' + id).disabled = true;
				}
			}
		}
		var current_team;
		if (current_team = event_members_groups_base_teams[event_members_groups_current])
		{
			var i = 1;
			var opt = $('event_members_base_team_select').options;
			while (opt[i])
			{
				if (opt[i].value == current_team)
				{
					$('event_members_base_team_select').selectedIndex = i;
					break;
				}
				i++;
			}
		}
	}
}
function event_members_group_activate(group_num)
{
	if (event_members_groups_members[group_num] && !event_members_groups_deleted[group_num])
	{
		_event_members_deactivate_tab();
		event_members_groups_current = group_num;
		_event_members_activate_tab();
	}
	return false;
}
function event_members_group_add()
{
	var new_group_title = prompt('Введите название группы. Это не обязательно, если Вы будете основывать группу на команде', '');
	// Input check
	if (new_group_title === null || typeof(new_group_title) === "undefined")
	{
		return;
	}
	// Old tab deactivating
	_event_members_deactivate_tab();
	// Global vars
	var k = event_members_groups_members.length;
	if (!new_group_title)
	{
		new_group_title = "Группа " + k;
	}
	event_members_groups_titles[k] = new_group_title;
	event_members_groups_members[k] = [];
	event_members_groups_current = k;
	// HTML
	var parent_el = $('event_members_groups_container');
	var html;
	html = '\
<div class="group_item this" id="event_members_group_tab_' + k + '">\
	<div onclick="return event_members_group_activate(' + k + ')">\
		<a class="edit_del del" href="" onclick="return event_members_group_delete(' + k + ')"/>\
		<a class="edit_del edit" href="" onclick="return event_members_group_rename(' + k + ')"/>\
		<a class="txt" id="event_members_group_tab_a_' + k + '" href="#">' + new_group_title.toInnerHTML() + '</a>\
	</div>\
</div>';
	parent_el.innerHTML += html;
}
function event_members_group_rename(group_num)
{
	var new_title = prompt('Переименовать группу «' + event_members_groups_titles[group_num] + '»', event_members_groups_titles[group_num]);
	// Input check
	if (new_title === null || typeof(new_title) === "undefined")
	{
		return;
	}
	if (!new_title)
	{
		new_title = "Группа " + group_num;
	}
	event_members_groups_titles[group_num] = new_title;
	$('event_members_group_tab_a_' + group_num).innerHTML = new_title.toInnerHTML();
	return false;
}
function event_members_group_delete(group_num)
{
	var i;
	var tabs_count = 0;
	for (i in event_members_groups_members)
	{
		if (!event_members_groups_deleted[i])
		{
			tabs_count++;
		}
	}
	if (tabs_count < 2)
	{
		alert('Нельзя удалить единственную в событии группу');
		return false;
	}
	if (confirm('Удалить группу «' + event_members_groups_titles[group_num] + '»?'))
	{
		if (event_members_groups[group_num])
		{
			event_members_groups_deleted[group_num] = true;
		}
		else
		{
			delete event_members_groups_titles[group_num];
			delete event_members_groups_members[group_num];
		}
		$('event_members_group_tab_' + group_num).style.display = "none";
		if (group_num == event_members_groups_current)
		{
			_event_members_deactivate_tab();
			for (i in event_members_groups_members)
			{
				if (!event_members_groups_deleted[i])
				{
					event_members_groups_current = i;
					break;
				}
			}
			_event_members_activate_tab();
		}
	}
	return false;
}
function event_members_select_team(team_id)
{
	_event_members_deactivate_tab();
	if (team_id != 0)
	{
		event_members_groups_members[event_members_groups_current] = event_members_teams[team_id];
		event_members_groups_base_teams[event_members_groups_current] = team_id;
	}
	else
	{
		delete event_members_groups_base_teams[event_members_groups_current];
	}
	_event_members_activate_tab();
}
function _dump_array(ar, keys, keys_only)
{
	var i;
	var res = '';
	for (i in ar)
	{
		if (res != '')
		{
			res += ',';
		}
		if (keys_only)
		{
			res += i;
		}
		else
		{
			if (keys)
			{
				res += i + ':';
			}
			res += ar[i];
		}
	}
	return res;
}
function event_members_save_prepare()
{
	var i;
	var res = '';
	res += '#event_members_groups\r\n' + _dump_array(event_members_groups, true) + '\r\n';
	res += '#event_members_groups_deleted\r\n' + _dump_array(event_members_groups_deleted, true, true) + '\r\n';
	res += '#event_members_groups_base_teams\r\n' + _dump_array(event_members_groups_base_teams, true) + '\r\n';
	for (i in event_members_groups_titles)
	{
		res += '#group_titles=' + i + '\r\n' + event_members_groups_titles[i] + '\r\n';
	}
	for (i in event_members_groups_members)
	{
		res += '#group_members=' + i + '\r\n' + _dump_array(event_members_groups_members[i], true, true) + '\r\n';
	}
	$('event_members_data').value = res;
	$('events_members_main_form').submit();
	return false;
}
// Happy debug
function dump(d,l) {
	if (l == null) l = 1;
	var s = '';
	if (typeof(d) == "object") {
		s += typeof(d) + " {\n";
		for (var k in d) {
			for (var i=0; i<l; i++) s += "  ";
			s += k+": " + dump(d[k],l+1);
		}
		for (var i=0; i<l-1; i++) s += "  ";
		s += "}\n"
	} else {
		s += "" + d + "\n";
	}
	return s;
}
