function categories_init()
{
	var parents = categories_parents();
	parents.bind("click", function()
	{
		var parent = $(this);
		var name = parent.text();
		if (name == "Другие")
		{
			location = "/Каталог/Другие/";
			return false;
		}

		var id = categories_parent_id(parent);
		$(".left_menu_children").hide();
		$(".category_" + id).show();

		parents.removeClass("left_menu_parent_selected");
		categories_select_parent(parent);

		return false;
	});

	var children = categories_children();
	children.bind("click", function()
	{
		children.removeClass("left_menu_child_selected");
		categories_select_child($(this));
	});

	categories_shift_children();

	var dec_location = decode(unescape(location.href));
	var dec_location2 = unescape(location.href);
	if (cateogories_activate(dec_location))
		return;
	else if (cateogories_activate(dec_location2))
		return;
	else
		categories_activate_by_default();
}

function categories_shift_children()
{
	var menu_children = $(".left_menu_children");
	for (var i = 0; i < menu_children.length; i++)
		menu_children.eq(i).css("margin-top", i * 34);
}

function categories_activate_by_default()
{
	categories_activate_by_name("Кольца");
}

function cateogories_activate(current_location)
{
	var values = current_location.split("/");
	if (values.length < 5)
		return false;
	
	if (values[3] != "Каталог" && values[3] != "Изделие")
		return false;

	if (values[3] == "Каталог")
		categories_activate_by_name(values[4], values[5]);
	
	else if (values[3] == "Изделие")
	{
		var name = values[4];
		values = name.split("+");
		if (values.length != 4)
			return false;

		var parent_id = values[2];
		var child_id = values[3];

		var parents = categories_parents();
		var i;
		if (parent_id == "1")
		{
			for (i = 0; i < parents.length; i++)
			{
				var parent = parents.eq(i);
				if (categories_parent_id(parent) != child_id)
					continue;

				categories_select_parent(parent);
			}
			return true;
		}

		for (i = 0; i < parents.length; i++)
		{
			var parent = parents.eq(i);
			if (categories_parent_id(parent) != parent_id)
				continue;

			categories_select_parent(parent);
			categories_activate_child(child_id, parent_id, true)
		}
	}

	return true;
}

function categories_activate_by_name(parent_name, child_name)
{
	var parents = categories_parents();
	for (var i = 0; i < parents.length; i++)
	{
		var parent = parents.eq(i)
		if (parent.text() != parent_name)
			continue;

		categories_select_parent(parent)
		var parent_id = categories_parent_id(parent);
		if (typeof child_name != "undefined")
			categories_activate_child(child_name, parent_id, false)
		else
			categories_show_children(parent_id);

		break;
	}
}

function categories_parent_id(element)
{
	return element.next("div").text();
}

function categories_activate_child(child_name, parent_id,  use_id)
{
	var children = categories_show_children(parent_id);
	children = categories_children(children);

	for (var i = 0; i < children.length; i++)
	{
		var child = children.eq(i);
		if (use_id && child.next("div").text() != child_name)
			continue;
		else if (!use_id && child.text() != child_name)
			continue;
		categories_select_child(child);

		break;
	}
}

function categories_parents()
{
	return $("#left_menu_buttons A");
}

function categories_children(parent)
{
	if (typeof parent != "undefined")
		return parent.find("A");
	else
		return $("A");
}

function categories_show_children(parent_id)
{
	$(".left_menu_children").hide();
	var children = $(".category_" + parent_id);
	children.show();
	return children;
}

function categories_select_parent(parent)
{
	parent.addClass("left_menu_parent_selected");
}

function categories_select_child(child)
{
	child.addClass("left_menu_child_selected");
}

function decode(utftext)
{
	var string = "";
	var i = 0;
	var c = c1 = c2 = 0;

	while ( i < utftext.length )
	{
		c = utftext.charCodeAt(i);

		if (c < 128)
		{
			string += String.fromCharCode(c);
			i++;
		}
		else if((c > 191) && (c < 224))
		{
			c2 = utftext.charCodeAt(i+1);
			string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
			i += 2;
		}
		else
		{
			c2 = utftext.charCodeAt(i+1);
			c3 = utftext.charCodeAt(i+2);
			string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
			i += 3;
		}
	}
	return string;
}

$(document).ready(categories_init);