function parseDate(dateString)
{
	var formatString = 'dd/MM/yyyy';
	if (dateString.length != formatString.length) return null;
	var date = new Date(0)
	var reg = /dd/i;
	var result;
	if (result = reg.exec(formatString))
	{
		date.setDate(dateString.substring(result.index, result.index + 2) - 0);
		formatString = formatString.replace('dd', '  ');
	}
	if (isNaN(date)) return null		

	reg = /MM/i;
	if (result = reg.exec(formatString))
	{
		date.setMonth(dateString.substring(result.index, result.index + 2) - 1);
		formatString = formatString.replace('MM', '  ');
	}
	if (isNaN(date)) return null

	reg = /yyyy/i;
	if (result = reg.exec(formatString))
	{
		date.setFullYear(dateString.substring(result.index, result.index + 4) - 0);
		formatString = formatString.replace('yyyy', '    ');
	}
	if (isNaN(date)) return null

	if (result = /yy/i.exec(formatString))
	{
		date.setFullYear(dateString.substring(result.index, result.index + 2) - 0);
		formatString = formatString.replace('yy', '  ');
	}
	if (isNaN(date)) return null
	return date;
}

function formatDate(date, formatString)
{
	formatString = formatString.replace('dd', date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
	formatString = formatString.replace('d', date.getDate());
	formatString = formatString.replace('MM', date.getMonth() < 9 ? '0' + (date.getMonth()  - 0 + 1): date.getMonth() - 0 + 1);
	formatString = formatString.replace('M', date.getMonth() - 0 + 1);
	formatString = formatString.replace('yyyy', date.getFullYear());
	formatString = formatString.replace('yy', (date.getFullYear() + '').substring(2));
	
	return formatString;
}			

function createDummyTableData(rows, cols)
{
	var tableData = []
	for (var i=0; i < rows; i++)
	{
		tableData[i] = [];
		for (var j=0; j < cols; j++) tableData[i][j] = Math.round(Math.random() * 100);
	}
	return tableData;
}

function randomNumber(max)
{
	return Math.round(Math.random() * max)
}

function randomDate()
{
	return formatDate(new Date(randomNumber(20) + 1990, randomNumber(28), randomNumber(11)), 'dd/MM/yyyy');
}

function randomString(length)
{
	var str = [];
	for (var i=0; i < length; i++) str.push(String.fromCharCode(randomNumber(25) + 65));
	return str.join('');
}

function randomAmount(max)
{
	var amount = parseInt((Math.round(Math.random() * max * 100) + .005)) / 100.0 + '';
	if(amount.indexOf('.') < 0) { amount += '.00'; }
	if(amount.indexOf('.') == (amount.length - 2)) { amount += '0'; }
	var tmp = amount.split(".");
	var tmp2 = tmp[0];
	amount = '';
	while (tmp2.length > 3)
	{
		amount = ',' + tmp2.substring(tmp2.length - 3);
		tmp2 = tmp2.substring(0, tmp2.length-3);
	}
	var amount = '$' + tmp2 + amount + '.' + tmp[1];
	return amount;
}

function generateTBody(rows, cols)
{			
	var dataGenerators = [function() {return "<span style='color: green;'>" + randomNumber(100); + "</span>"}, function () { return "<b>" + randomString(randomNumber(15) + 5) + "</b>";}, function () { return "<a href='#'>" + randomDate() + "</a>";}, function() { return randomAmount(10000); }];

	var rowStart = '<tr>';
	var rowEnd = '</tr>';
	var cellStart = '<td>';
	var cellEnd = '</td>';

	var html = [];

	var numGenerators = dataGenerators.length;

	for (var i=0; i < rows; i++)
	{
		html.push(rowStart);
		for (var j=0; j < cols; j++)
		{
			html.push(cellStart);
			html.push(dataGenerators[j % numGenerators]());
			html.push(cellEnd);
		}
		html.push(rowEnd);
	}
	return html.join('');
}