var srcURL = '/catalogue_data.php';

$(function()
{
	$.getJSON(srcURL, function(data)
	{
		addRows($('#catalogue'),data);
	});
});



function addRows(target,data)
{
	var row;

	for(var i = 0, len = data.length; i < len; i++)
	{
		row = buildRow(data[i]);
		target.append(row);
	}
}

function buildRow(data)
{
	var cat = data.category,
		level = (cat.length - 4) / 4;
	
	if(data.stockcode) { level++; }

	var row = $('<li></li>').addClass('level_' + level),
		item = $('<span class="item"></span>').data('category',data.category),
		img, icon;

	if(data.subcats > 0 || data.products > 0)
	{
		img = $('<span class="toggle"></span>').click(toggleRow);
		item.append(img)
	}
	else
	{
		item.append($('<span class="pad"></span>'));
	}

	icon = $('<span class="icon"></span>');

	if(data.stockcode) { icon.addClass('product'); item.data('code',data.stockcode); item.data('type', 'prod'); }
	else if(data.grouped == 'Y') { icon.addClass('group'); item.data('code',data.category); item.data('type', 'cat'); }
	else { icon.addClass('category'); item.data('code',data.category); item.data('type', 'cat'); }

	item.append(icon);

	item.append($('<span class="text"></span>').text(data.name).click(toggleRow));

	item.append($('<span class="icon edit"></span>').click(edit));
	
	row.append(item);

	return row;
}

function toggleRow()
{
	var root = $(this).parent();
	if(root.find('.product').length) { return false; } // a product, nothing to open
	
	if(root.hasClass('open')) // already open, close it
	{
		root.siblings('li').hide();
		root.removeClass('open');
		return false;
	}

	if(root.siblings('li').length) // already has data, show it
	{
		root.siblings('li').show();
		root.addClass('open');
		return false;
	}

	var cat = root.data('category');

	root.find('.category').addClass('load');

	$.getJSON(srcURL, { category : cat }, function(data)
	{
		addRows(root.parent(),data);
		root.addClass('open');
		root.find('.category').removeClass('load');
	});

	return false;
}
