var calendar = {};
calendar.source = 'http://www.prace-jinak.cz/inside/calendar.php';
calendar.format = 'dd.mm.yyyy';
calendar.invoked_by = null;
calendar.init = function ()
{
	var inputs = document.getElementsByTagName('input');

	for (var i = 0; i < inputs.length; i++)
	{
		if (class_handler.has(inputs[i], 'date'))
		{
			event_handler.add(inputs[i], 'click', calendar.invoke);

			var img = document.createElement('img');
			img.src = 'http://www.prace-jinak.cz/'+'images/calendar.png';
			img.id = 'for_calender'+inputs[i].id;
			img.className = 'clickable';
			dom_handler.insertAfter(img, inputs[i]);

			event_handler.add(img, 'click', calendar.invoke);
		}
	}

	var calendar_div = document.createElement('div');
	calendar_div.id = 'javascript_calendar';
	calendar_div.style.position = 'absolute';
	calendar_div.style.zIndex = '100';
	calendar_div.style.display = 'none';
	document.getElementsByTagName('body')[0].appendChild(calendar_div);
};
calendar.invoke = function (event)
{
	calendar.destroy();

	var event = event_handler.fix(event);
	if (event.preventDefault)
	{
		event.preventDefault();
	}

	var element = event.target;

	if (element.tagName.toLowerCase() == 'img')
	{
		element = document.getElementById(element.id.substr(12, event.target.id.length));
	}

	param0 = new Array('element_id', element.id);
	param1 = new Array('language', calendar.language);
	if (element.value.length > 0)
	{
		param2 = new Array('date', element.value);
		param = new Array(param0, param1, param2);
	}
	else
	{
		param = new Array(param0, param1);
	}

	if (requester.loadURL('POST', calendar.source, param, false))
	{
		var content = requester.getText();

		var calendar_div = document.getElementById('javascript_calendar');

		calendar_div.style.display = 'block';
		calendar_div.style.top = (position.getPositionY(event)+20)+'px';
		calendar_div.style.left = position.getPositionX(event)+'px';

		calendar_div.innerHTML = content;

		var anchors = calendar_div.getElementsByTagName('a');
		for (var i = 0; i < anchors.length; i++)
		{
			if (class_handler.has(anchors[i], 'close_cal'))
			{
				event_handler.add(anchors[i], 'click', calendar.destroy);
			}
			if (class_handler.has(anchors[i], 'clear_cal'))
			{
				event_handler.add(anchors[i], 'click', calendar.clear);
			}
			if (class_handler.has(anchors[i], 'fill_date'))
			{
				event_handler.add(anchors[i], 'click', calendar.fill_date);
			}
			else if (class_handler.has(anchors[i], 'move'))
			{
				event_handler.add(anchors[i], 'click', calendar.move);
			}
		}

		calendar.invoked_by = element;
		calendar.setDateFormat(calendar.invoked_by.id);
	}
};
calendar.destroy = function (event)
{
	if (event)
	{
		var event = event_handler.fix(event);

		if (event.preventDefault)
		{
			event.preventDefault();
		}
	}

	var calendar_div = document.getElementById('javascript_calendar');

	if (calendar_div)
	{
		calendar_div.innerHTML = '';
		calendar_div.style.display = 'none';
	}

	return false;
};
calendar.fill_date = function (event)
{
	var event = event_handler.fix(event);

	if (event.preventDefault)
	{
		event.preventDefault();
	}

	calendar.invoked_by.value = event.target.id;


	calendar.destroy();
	calendar.invoked_by.focus();
	calendar.invoked_by.blur();

	return false;
};
calendar.clear = function (event)
{
	var event = event_handler.fix(event);

	if (event.preventDefault)
	{
		event.preventDefault();
	}

	calendar.invoked_by.value = '';

	calendar.destroy();

	return false;
};
calendar.move = function (event)
{
	var event = event_handler.fix(event);

	if (event.preventDefault)
	{
		event.preventDefault();
	}

	param_0 = new Array('element_id', calendar.invoked_by.id);
	param_1 = new Array('language', calendar.language);
	param_2 = new Array('date', event.target.id);
	param = new Array(param_0, param_1, param_2);

	if (requester.loadURL('POST', calendar.source, param, false))
	{
		var content = requester.getText();

		var calendar_div = document.getElementById('javascript_calendar');
		calendar_div.innerHTML = '';
		calendar_div.innerHTML = content;

		var anchors = calendar_div.getElementsByTagName('a');
		for (var i = 0; i < anchors.length; i++)
		{
			if (class_handler.has(anchors[i], 'close_cal'))
			{
				event_handler.add(anchors[i], 'click', calendar.destroy);
			}
			if (class_handler.has(anchors[i], 'clear_cal'))
			{
				event_handler.add(anchors[i], 'click', calendar.clear);
			}
			if (class_handler.has(anchors[i], 'fill_date'))
			{
				event_handler.add(anchors[i], 'click', calendar.fill_date);
			}
			if (class_handler.has(anchors[i], 'move'))
			{
				event_handler.add(anchors[i], 'click', calendar.move);
			}
		}
	}

	return false;
};
calendar.setDateFormat = function (element_id)
{
	date_formats = new Array();
	date_formats['default'] = 'dd.mm.yyyy';
	if (typeof(date_formats[element_id]) != 'undefined')
	{
		calendar.date_format = date_formats[element_id];
	}
	else
	{
		calendar.date_format = date_formats['default'];
	}
};