var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var Paginator = YAHOO.widget.Paginator;
var DS = YAHOO.util.DataSource;
var DT = YAHOO.widget.DataTable;

// Needed to be able to cause the table to reload on a whim (i.e. to hook in my custom filters
// which have their say in the requestBuilder function). Didn't seem to be any other way to do
// this, so I broke out the monkeypatching gun.
DT.prototype.updateTable = function() {
	// Set back to first page (otherwise things make explode)
	var oPaginator = this.get('paginator');
	if (oPaginator) oPaginator.setPage(1,true);

	var oState = this.getState();
	var request = this.get("generateRequest")(oState, this);
	var callback = {
		success : this.onDataReturnSetRows,
		failure : this.onDataReturnSetRows,
		argument : oState,
		scope : this
	};
	this._oDataSource.sendRequest(request, callback);
}

var MachineryForSaleDataTable = {
	datatable: null,
	init: function() {
		// new YAHOO.widget.LogReader();

		var columns = [
			{key: 'type', label: 'Type', sortable: true},
			{key: 'manufacturer', label: 'Manufacturer', sortable: true},
			{key: 'model', label: 'Model', sortable: true},
			{key: 'region', label: 'Region', sortable: true},
			{key: 'price', label: 'Price', sortable: true},
			{key: 'machineryforsaleimage_set', label: 'Thumbnail', sortable: true}
		];





		var datasource = new DS('json/?');
		datasource.responseType = DS.TYPE_JSON;
		datasource.responseSchema = {
			resultsList: 'records',
			fields: [
				{key: 'type'},
				{key: 'manufacturer'},
				{key: 'model'},
				{key: 'region'},
				{key: 'price'},
				{key: 'machineryforsaleimage_set'}
			],
			metaFields: {
				totalRecords: 'totalRecords',
				paginationRowsPerPage: "pageSize",
				paginationRecordOffset: "startIndex",
				sortKey: "sort",
				sortDir: "dir"
			}
		}

		var config = {
			dynamicData: true,

			sortedBy: {key: 'type', dir: DT.CLASS_ASC},
			paginator: new Paginator({ rowsPerPage: 8, containers: 'dt-pager' })
		};

		var datatable = new DT('id_machineryforsaledatatable', columns, datasource, config);
		datatable.doBeforeLoadData = function(req, res, pay) {
			pay.totalRecords = res.meta.totalRecords;
			pay.pagination = {
				recordOffset: res.meta.paginationRecordOffset,
				rowsPerPage: res.meta.paginationRowsPerPage
			};
			pay.sortedBy = {
				key: res.meta.sortKey,
				dir: "yui-dt-" + res.meta.sortDir
			};
			return true;
		}

		MachineryForSaleDataTable.datatable = datatable;
	}
}

Event.onDOMReady(MachineryForSaleDataTable.init);

