// first example - plain vanilla
var t1;
window.addEvent('domready', function(){
	t1 = new PTable();
	t1.injectInto('ex1');
	t1.setSchema(testSchema);
	t1.addRow(testData);
});

testSchema = {
		root: {
			name: 'Group1', displayName: 'Group 1', childProperty: 'items',
			columns: [ 
				{ name: 'name', displayName: 'name' },
				{ name: 'desc', displayName: 'description' }
			],
			child: {
				name: 'invoices', displayName: 'invoices', childProperty: 'items',
				columns: [ 
					{ name: 'name', displayName: 'column 1' },
					{ name: 'test1', displayName: 'a fat column' },
					{ name: 'amount', displayName: 'third column' },
					{ name: 'test2', displayName: '4 column' }
				],
				child: {
					name: 'items', displayName: 'Group 3',
					columns: [ 
						{ name: 'crud1', displayName: 'third row column 1' },
						{ name: 'crud2', displayName: 'a number' },
						{ name: 'crud3', displayName: 'description' }
					]
				}
			}
		}
	};

testData = {
		name: 'Pat',
		desc: 'pat is king',
		items: [
			{
				name: 'Test1', test1: 'more', 
				amount: '123', test2: 'pooopoooo',
				items: [
					{ crud1: 'moon', crud2: 'good life', crud3: 'hang around' },
					{ crud1: 'pipe', crud2: 'friends', crud3: 'evening' }
				]
			},
			{
				name: 'Test2', test1: 'fiddle', 
				amount: '435', test2: 'do',
				items: [
					{ crud1: 'moon', crud2: 'good life', crud3: 'hang around' }
				]
			},
			{
				name: 'Test3', test1: 'haha', 
				amount: '7893', test2: 'kruger rand',
				items: [
					{ crud1: 'moon', crud2: 'good life', crud3: 'share' },
					{ crud1: 'long', crud2: 'tomorrow', crud3: 'yesterday' },
					{ crud1: 'moon', crud2: 'good life', crud3: 'hang around' },
					{ crud1: 'pipe', crud2: 'friends', crud3: 'evening' }
				]
			},
		]
	};



// second example - rss reader
var t2;
window.addEvent('domready', function(){
	t2 = new PTable();
	t2.injectInto('ex2');
	t2.setSchema({
		root: {
			name: 'Items', displayName: 'Feed Items', childProperty: null,
			columns: [ 
				{ name: 'title', displayName: 'Post Title' },
				{ name: 'description', displayName: 'Content' }
			]
		}
	});
	Asset.javascript('http://pipes.yahoo.com/pipes/pipe.run?_id=UITJLeXe3BGp14tFl7okhQ&_render=json&limit=9&url=http%3A%2F%2Ffeeds.feedburner.com%2Fpatcullen&_callback=piped');
});

// for use with example 2
function piped(feed) {
	t2.addRow(feed.value.items);
}






// third example - recursive folder view
var t3;
window.addEvent('domready', function(){
	t3 = new PTable({
		defaultCellRenderer: new PFileCellRenderer()
	});
	t3.injectInto('ex3');
	t3.setSchema({
		root: {
			name: 'filefolder', displayName: 'Files and Folders', childProperty: 'items',
			columns: [ 
				{ name: 'detail', displayName: 'Detail' }
			]
		}
	});
	t3.setHeaderVisible(false);
	t3.options.schema.options.root.options.child = t3.options.schema.options.root; // cause recursion
	t3.addRow({
		detail: { name: 'test 0', type: 0 },
		items: [
			{
				detail: { name: 'test 1', type: 0 },
				items: [
					{ detail: { name: 'test 1.1', type: 1 } },
					{ detail: { name: 'test 1.2', type: 1 } }
				]
			},
			{
				detail: { name: 'test 2', type: 0 },
				items: [
					{
						detail: { name: 'test 2.1', type: 0 },
						items: [
							{ detail: { name: 'test 2.1.1', type: 1 } },
							{ detail: { name: 'test 2.1.2', type: 1 } }
						]
					},
					{
						detail: { name: 'test 3', type: 0 },
						items: [
							{ detail: { name: 'test 3.1', type: 1 } }
						]
					}
				]
			},
			{ detail: { name: 'test 4', type: 0 } }
		]
	});
	
});

// for use with example 3
var PFileCellRenderer = new Class({
	Implements: [Events, Options],
	options: { },
	initialize: function(options) {
		this.setOptions(options);
	},
	writeCell: function(value, column) {
		return new Element('span', {
			'html': value.name,
			'class': (value.type == 0 ? 'folder' : 'file')
		});
	}
	
});


















