$.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback )
{
	if ( typeof sNewSource != 'undefined' )
	{
		oSettings.sAjaxSource = sNewSource;
	}
	this.oApi._fnProcessingDisplay( oSettings, true );
	var that = this;

	oSettings.fnServerData( oSettings.sAjaxSource, null, function(json) {
		/* Clear the old information from the table */
		that.oApi._fnClearTable( oSettings );
		/* Got the data - add it to the table */
		for ( var i=0 ; i<json.aaData.length ; i++ )
		{
			that.oApi._fnAddData( oSettings, json.aaData[i] );
		}

		oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
		that.fnDraw( that );
		that.oApi._fnProcessingDisplay( oSettings, false );

		/* Callback user function - for event handlers etc */
		if ( typeof fnCallback == 'function' )
		{
			fnCallback( oSettings );
		}
	} );
}

var fTable, oTable, cTable;

$(document).ready(function()
{

	// Orders data table
	oTable = $('#tblProposals').dataTable({
		"sPaginationType": "full_numbers",
		"bJQueryUI": true,
		"aoColumns": [
			{ "sType": "html" },      // No.
			,						  // Product Type
			{ "sType": "html" },      // proposer
			,      					  // ntaa number
			{ "sType": "uk_date" },   // Date
			{ "sType": "html" }],     // Product status
		"aaSorting"  : [[4,'asc']]    // Date by default
	});


	// Filter on summary data
	$('a.oFilter').click( function(){

		str = $(this).html();
		if (str == 'All') str = '';
		oTable.fnFilter( str );
		return false;
	});

});

/* plugins for dataTables UK date Sorting */
jQuery.fn.dataTableExt.oSort['uk_date-asc']  = function(a,b) {
	var ukDatea = a.split('/');
	var ukDateb = b.split('/');
	var x = (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
	var y = (ukDateb[2] + ukDateb[1] + ukDateb[0]) * 1;

	return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['uk_date-desc'] = function(a,b) {
	var ukDatea = a.split('/');
	var ukDateb = b.split('/');

	var x = (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
	var y = (ukDateb[2] + ukDateb[1] + ukDateb[0]) * 1;

	return ((x < y) ? 1 : ((x > y) ?  -1 : 0));
};

jQuery.fn.dataTableExt.aTypes.push(
	function ( sData )
	{
		if (sData.match(/^(0[1-9]|[12][0-9]|3[01])\-(0[1-9]|1[012])\-(19|20|21)\d\d$/))
		{
			return 'uk_date';
		}
		return null;
	}
);


/* Example call to load a new file */

//fTable.fnReloadAjax();

/* Example call to reload from original file */
//oTable.fnReloadAjax();

