var row_handler = {};
row_handler.get_grades = BASE_URL+'scripts/get_grades.php';
row_handler.get_countries = BASE_URL+'scripts/get_countries.php';
row_handler.get_prices = BASE_URL+'scripts/get_prices.php';
row_handler.requester = null;
row_handler.init = function ()
{
	var tmp_table = document.getElementById('reg_table_body');
	if (tmp_table)
	{
		var anchors = tmp_table.getElementsByTagName('a');
		for (var i = 0; i < anchors.length; i++)
		{
			if (class_handler.has(anchors[i], 'del_row'))
			{
				event_handler.add(anchors[i], 'click', row_handler.del);
			}
			else
			{
				event_handler.add(anchors[i], 'click', row_handler.add);
			}
		}
	}
};
row_handler.del = function (event)
{
	event = event_handler.fix(event);
	if (event.preventDefault)
	{
		event.preventDefault();
	}

	var tmp_table = document.getElementById('reg_table_body');
	var tmp_tr = tmp_table.getElementsByTagName('tr');
	if (tmp_tr.length <= 1)
	{
		return;
	}

	var element = event.target;
	while (element.tagName.toLowerCase() != 'tr')
	{
		element = element.parentNode;
	}

	element.parentNode.removeChild(element);

	price_handler.updatePrices();
};
row_handler.add = function (event)
{
	event = event_handler.fix(event);
	if (event.preventDefault)
	{
		event.preventDefault();
	}

	var grades = row_handler.getScript('grades');
	var countries = row_handler.getScript('countries');
	var prices = row_handler.getScript('prices');

	var tmp_table = document.getElementById('reg_table_body');

	var tr = document.createElement('tr');

	//td
	var td = document.createElement('td');

	var input = document.createElement('input');
	input.type = 'text';
	input.name = 'names[]';
	class_handler.add(input, 'required');
	td.appendChild(input);

	var br = document.createElement('br');
	td.appendChild(br);

	var input = document.createElement('input');
	input.type = 'text';
	input.name = 'surnames[]';
	class_handler.add(input, 'required');
	td.appendChild(input);

	tr.appendChild(td);

	//td
	var td = document.createElement('td');

	var select = document.createElement('select');
	select.name = 'grades[]';
	row_handler.appendGrades(select, grades);
	td.appendChild(select);

	tr.appendChild(td);

	//td
	var td = document.createElement('td');

	var select = document.createElement('select');
	select.name = 'countries[]';
	row_handler.appendCountries(select, countries);
	td.appendChild(select);

	tr.appendChild(td);

	//td
	var td = document.createElement('td');

	var input = document.createElement('input');
	input.name = 'text';
	input.name = 'dojos[]';
	td.appendChild(input);

	tr.appendChild(td);

	//td
	var td = document.createElement('td');
	row_handler.appendPrices(td, prices);

	tr.appendChild(td);

	//td
	var td = document.createElement('td');
	class_handler.add(td, 'price_subtotal');

	tr.appendChild(td);

	//td
	var td = document.createElement('td');
	class_handler.add(td, 'td_del_row');

	var tmp_a = document.createElement('a');
	tmp_a.href = '#';
	event_handler.add(tmp_a, 'click', row_handler.del);
	class_handler.add(tmp_a, 'del_row');

	var img = document.createElement('img');
	img.src = BASE_URL+'images/del.gif';
	img.alt = 'del';
	img.title = DEL_ROW;
	class_handler.add(img, 'tooltip');

	tmp_a.appendChild(img);

	td.appendChild(tmp_a);

	tr.appendChild(td);

	//td
	var td = document.createElement('td');
	class_handler.add(td, 'td_add_row');

	var tmp_a = document.createElement('a');
	tmp_a.href = '#';
	event_handler.add(tmp_a, 'click', row_handler.add);
	class_handler.add(tmp_a, 'add_row');

	var img = document.createElement('img');
	img.src = BASE_URL+'images/add.gif';
	img.alt = 'add';
	img.title = ADD_ROW;
	class_handler.add(img, 'tooltip');

	tmp_a.appendChild(img);

	td.appendChild(tmp_a);

	tr.appendChild(td);

	tmp_table.appendChild(tr);

	if (typeof(ext_tooltip) != 'undefined')
	{
		ext_tooltip.init();
	}

	price_handler.updatePrices();
};
row_handler.getScript = function (type)
{
	param = [];
	var p = 0;

	param[p] = ['lang', Cookie.getValue('lang')];

	row_handler.requester = new xmlhttp_handler();
	row_handler.requester.loadURL('POST', eval('row_handler.get_'+type), param, false);

	return row_handler.requester.getXML();
}
row_handler.appendGrades = function (to_element, result)
{
	var grades = result.getElementsByTagName('grade');
	for (var i = 0; i < grades.length; i++)
	{
		var option = document.createElement('option');

		var tmp_id = grades[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
		option.value = tmp_id;

		var tmp_desc = grades[i].getElementsByTagName('desc')[0].childNodes[0].nodeValue;
		var tmp_txt = document.createTextNode(tmp_desc);

		option.appendChild(tmp_txt);

		to_element.appendChild(option);
	}
};
row_handler.appendCountries = function (to_element, result)
{
	var countries = result.getElementsByTagName('country');
	for (var i = 0; i < countries.length; i++)
	{
		var option = document.createElement('option');

		var tmp_id = countries[i].getElementsByTagName('id')[0].childNodes[0].nodeValue;
		option.value = tmp_id;

		var tmp_desc = countries[i].getElementsByTagName('desc')[0].childNodes[0].nodeValue;
		var tmp_txt = document.createTextNode(tmp_desc);

		option.appendChild(tmp_txt);

		to_element.appendChild(option);
	}
};
row_handler.appendPrices = function (to_element, result)
{
	var tmp_table = document.getElementById('reg_table_body');

	var services = result.getElementsByTagName('service');
	for (var i = 0; i < services.length; i++)
	{
		var tmp_title = services[i].getElementsByTagName('title')[0].childNodes[0].nodeValue;

		var tmp_txt = document.createTextNode(tmp_title);
		to_element.appendChild(tmp_txt);

		tmp_rows = tmp_table.getElementsByTagName('tr');

		var select = document.createElement('select');
		select.name = 'set'+tmp_rows.length+'[]';

		var price_groups = services[i].getElementsByTagName('group');
		for (var j = 0; j < price_groups.length; j++)
		{
			var tmp_append_to = select;

			if (price_groups[j].getElementsByTagName('label').length > 0)
			{
				var tmp_label = price_groups[j].getElementsByTagName('label')[0].childNodes[0].nodeValue;

				var optgroup = document.createElement('optgroup');
				optgroup.label = tmp_label;

				var tmp_append_to = optgroup;
			}

			var prices = price_groups[j].getElementsByTagName('price');
			for (var k = 0; k < prices.length; k++)
			{
				var tmp_id = prices[k].getElementsByTagName('id')[0].childNodes[0].nodeValue;
				var tmp_desc = prices[k].getElementsByTagName('desc')[0].childNodes[0].nodeValue;

				var option = document.createElement('option');
				option.value = tmp_id;

				var tmp_txt = document.createTextNode(tmp_desc);
				option.appendChild(tmp_txt);

				tmp_append_to.appendChild(option);
			}

			if (tmp_append_to != select)
			{
				select.appendChild(optgroup);
			}
		}

		event_handler.add(select, 'change', price_handler.updatePrices);

		to_element.appendChild(select);

		var br = document.createElement('br');
		to_element.appendChild(br);
	}
};

var price_handler = {};
price_handler.script = BASE_URL+'scripts/compute_prices.php';
price_handler.requester = null;
price_handler.init = function ()
{
	var tmp_table = document.getElementById('reg_table_body');

	if (!tmp_table)
	{
		return;
	}

	var re = new RegExp('(set[0-9]{1,})');

	var selects = tmp_table.getElementsByTagName('select');
	for (var i = 0; i < selects.length; i++)
	{
		if (selects[i].name.match(re))
		{
			event_handler.remove(selects[i], 'change', price_handler.updatePrices);
			event_handler.add(selects[i], 'change', price_handler.updatePrices);
		}
	}

	price_handler.updatePrices();
};
price_handler.updatePrices = function ()
{
	var tmp_table = document.getElementById('reg_table_body');

	param = [];
	var p = 0;

	var re = new RegExp('(set[0-9]{1,})');

	var trs = tmp_table.getElementsByTagName('tr');
	for (var i = 0; i < trs.length; i++)
	{
		ids = [];
		var c = 0;

		var selects = trs[i].getElementsByTagName('select');
		for (var j = 0; j < selects.length; j++)
		{
			if (selects[j].name.match(re))
			{
				ids[c] = selects[j].value;
				c++;
			}
		}

		param[p] = ['prices[]', ids];
		p++;
	}

	price_handler.requester = new xmlhttp_handler();
	price_handler.requester.setAction(price_handler.outputPrices);
	price_handler.requester.loadURL('POST', price_handler.script, param, true);
};
price_handler.outputPrices = function ()
{
	var tmp_table = document.getElementById('reg_table_body');

	var result = price_handler.requester.getXML();

	var trs = tmp_table.getElementsByTagName('tr');

	var rows = result.getElementsByTagName('row');
	for (var i = 0; i < rows.length; i++)
	{
		var tmp_tds = trs[i].getElementsByTagName('td');
		for (var j = 0; j < tmp_tds.length; j++)
		{
			if (class_handler.has(tmp_tds[j], 'price_subtotal'))
			{
				tmp_tds[j].innerHTML = rows[i].childNodes[0].nodeValue+'&nbsp;CZK';
			}
		}
	}

	var total_container = document.getElementById('price_total');
	total_container.innerHTML = result.getElementsByTagName('total')[0].childNodes[0].nodeValue+'&nbsp;CZK';
};

event_handler.add(window, 'load', row_handler.init);
event_handler.add(window, 'load', price_handler.init);
