var Link = new Object ();

Link.initialize = function ()
{
	// Cleanning array
	if (isSet (this.link))
	{
		var len = this.link.length;
		for (var i=0; i < len; i++)
			this.link.pop();
	}
	else // Creating new array
		this.link = new Array();
};

Link.push = function (value)
{
	this.link.push(value);
};

Link.pop = function ()
{
	if (this.link.length == 0)
		return false;

	return this.link.pop ();
};

Link.back = function (_event)
{
	var str = Link.pop ()
	if (str !== false)
	{
		var dates = str.split (",");
		Selection.set ("from", dates[0]);
		Selection.set ("to", dates[1]);
		TaskManager.add_task ("refresh_table", 'datetime_content');
	}
	
	return false;
};

Link.restore = function (_event)
{
	if (! isSet (this.link))
		return false;

	while (str = Link.pop())
	{
		var dates = str.split (",");
		Selection.set ("from", dates[0]);
		Selection.set ("to", dates[1]);
	}
	
	return false;
};

Link.setPluses = function (_table, _cell)
{
	if (isSet (_table.getAttribute ("rel")))
		_table = document.getElementById ("rel");

	if (! isSet (_table))
		return false;

	var rows = _table.tBodies[0].rows;
	var value = isSet (rows[0].cells[_cell].getAttribute ("title")) ? rows[0].cells[_cell].getAttribute ("title") : rows[0].cells[_cell].innerHTML;
	if (! value.match (/^\d{4,4}[-\/\.]\d{2,2}[-\/\.]\d{2,2}\ +\(.+\)$/)) // day
		if (! value.match (/^\d{4,4}[-\/\.]\d{2,2}\ +\(.+\)$/)) //month
			if (! value.match (/^\d{4,4}$/)) //year
				return false;
	
	for (var i=0; i < rows.length; i++)
	{
		var value = isSet (rows[i].cells[_cell].getAttribute ("title")) ? rows[i].cells[_cell].getAttribute ("title") : rows[i].cells[_cell].innerHTML;
		var plus = document.createElement ("A");
			plus.className = "plus";
			plus.href = "#";
			plus.setAttribute ("date", value);
			plus.onclick = function ()
			{
				var value = this.getAttribute ("date");
				if (value.indexOf (" ") > -1)
					var value = value.substr (0, value.indexOf (" "));

				if (value.match (/^\d{4,4}[-\/\.]\d{2,2}[-\/\.]\d{2,2}$/)) // day
					Link.setSelection (value, value);
				else if (value.match (/^\d{4,4}[-\/\.]\d{2,2}$/)) //month
				{
					value = value+"-01";
					Link.setSelection (value, date ("Y-m-d", strtotime("+1 month -1 second", strtotime(value+" 00:00:00"))));
				}
				else if (value.match (/^\d{4,4}$/)) //year
					Link.setSelection (value+"-01-01", value+"-12-31");
				
				TaskManager.add_task ("refresh_table", 'datetime_content');
				return false;
			};
			// fixing text indent
		appendAsFirst (plus, rows[i].cells[_cell]);
		var textIndent = parseInt ($(rows[i].cells[_cell]).css("text-indent"));
			$(rows[i].cells[_cell]).css("text-indent", (textIndent + 16) + "px");
	}
};

Link.setSelection = function (from, to)
{
	var to_push = Selection.get ("from")+","+Selection.get ("to");
	Link.push (to_push);
	Selection.set ("from", from);
	Selection.set ("to", to);
};
