var pkFilterByMediaGroup = function(dataSet, row, rowNumber)
{
	if (row["grouping_key"] == pkWorkWithMediaGroup) {
		return row; // Return the row to keep it in the data set.
		}
	else {
		return null; // Return null to remove the row from the data set.
	}
}

var pkFilterMediaGroups = function(dataSet, row, rowNumber) {	
	if (row["grouping_key"].match(pkMediaGroupRegex)) {
		return row;
	    }
	else {
		return null;
		}
}

if (typeof pkMGSortOrder == 'undefined' || pkMGSortOrder == "") {
    pkMGSortOrder = "ascending";
    }

if (typeof pkMGSortKey == 'undefined' || pkMGSortKey == "") {
    pkMGSortKey = "grouping_key";
    }

var dsMediaGroup = new Spry.Data.XMLDataSet("xmldata/all_media_group.xml","media_group/item",{sortOnLoad:pkMGSortKey,sortOrderOnLoad:pkMGSortOrder,distinctOnLoad:true});
dsMediaGroup.setColumnType("media_verbose_info", "html");
dsMediaGroup.filter(pkFilterMediaGroups);

var dsMediaGroupObserver = new Object;
// This allows us to select which row we are going to select to start
dsMediaGroupObserver.onDataChanged = function(dataSet, data){
	var row = dataSet.findRowsWithColumnValues({"grouping_key": pkWorkWithMediaGroup}, true);
	// if we can find the row, then we set our current row to it
	if (row) {
		dataSet.setCurrentRow(row.ds_RowID);
		}
	// otherwise we will go with whatever the default is, and be sure to point our associated resources to it
	else {
		row = dataSet.getCurrentRow();
		pkWorkWithMediaGroup = row['grouping_key'];
		dsAssocRes.filter(pkFilterByMediaGroup);
		}
	}
dsMediaGroup.addObserver(dsMediaGroupObserver);

if (typeof pkResourceSortOrder == 'undefined' || pkResourceSortOrder == "") {
    pkResourceSortOrder = "ascending";
    }

var dsResource = new Spry.Data.XMLDataSet("xmldata/{dsMediaGroup::grouping_key}.xml", "resource/item",{sortOnLoad:"group_sequence",sortOrderOnLoad:pkResourceSortOrder,distinctOnLoad:true});
dsResource.setColumnType("audio_flag", "number");
dsResource.setColumnType("group_sequence", "number");
dsResource.setColumnType("pubDate", "date");
dsResource.setColumnType("ssl_date/@d_mmm_yyyy", "date");
dsResource.setColumnType("recorded_date/@d_mmm_yyyy", "date");
dsResource.setColumnType("recorded_date/@mmm_yyyy", "date");
dsResource.setColumnType("res_verbose_info", "html");
if (pkFindCurrentSSL) {
	var dsResourceObserver = new Object;
	dsResourceObserver.onDataChanged = function(dataSet, data) {
		var row = dataSet.findRowsWithColumnValues({"ssl_date/@d_mmm_yyyy": pkGetSpecificDate(1,'Sat')}, true);
		if (row) {
			dataSet.setCurrentRow(row.ds_RowID);
			}
		}
	dsResource.addObserver(dsResourceObserver);
	}

var dsAssocRes = new Spry.Data.XMLDataSet("xmldata/all_assoc.xml", "assoc_resource/item",{sortOnLoad:"sequence",sortOrderOnLoad:"ascending",distinctOnLoad:true});
dsAssocRes.setColumnType("Id", "number");
dsAssocRes.filter(pkFilterByMediaGroup);
