var filters = new Object();
filters.platforms = {};
filters.applications = {};
filters.version = {};
filters.types = {};
filters.subjects = {};
filters.age_levels = {};

function build_browse_tutorials_results(){
	var empty_text = 'No results found. Please refine search.';
	if(has_preferred_filters){
     		empty_text += ' You can also try turning off preferred filters from the checkbox above.';
	}

	// shared reader
	var BrowseRecord = Ext.data.Record.create([
			{name:'series_title', type: 'string'},
			{name:'browse_title', type: 'string'},
			{name:'key'},
			{name:'platform'},
			{name:'platforms_id'},
			{name:'application'},
			{name:'version'},
			{name:'playing_time'},
			{name:'tutorial_count'},
			{name:'type'},
			{name:'series_url'},
			{name:'series_id'},
			{name:'series_type'},
			{name:'app_id'},
			{name:'cc'}
	]);

	var store = new xd.GroupingStore({
		groupField:'browse_title',
		autoLoad: false,
		sortInfo: { field: 'browse_title', direction: 'ASC' },
		reader: new Ext.data.ArrayReader({},BrowseRecord)
	});

	var filters_checkbox = preferred_filters_checkbox('View Only Preferred Tutorials');

	grouping_view.emptyText = empty_text;

	var grid = new xg.GridPanel({
		store: store,

		columns: [
			{id:'browse_title',header: "Tutorial Title", sortable: true, dataIndex: 'browse_title' },
			{id:'series_title',header: "Series Title", width: 105, sortable: true, dataIndex: 'series_title', renderer: renderSeriesTitle },
			{id:'tutorial_count',  dataIndex: 'tutorial_count', width: 120, header: "Tutorial Count"},
			{id:'playing_time',  dataIndex: 'playing_time', width: 140, header: "Total Play Time" },
			{id:'cc',  dataIndex: 'cc', header: "CC", width: 40, renderer: renderCC }
		],

		view: grouping_view,
		width: 700,
		autoHeight: true,
		frame: true,
		collapsible: false,
		disableSelection: true,
		enableColumnHide: false,
		enableColumnMove: false,
		trackMouseOver: false,
		loadMask: true,

		id: 'results_grid',
		autoExpandColumn: 'series_title',
		title: 'Browsing Tutorials: ',
		iconCls: 'icon-grid',
		renderTo: 'browse_table',
		listeners: {
			'afterrender': function(result_grid){
				result_grid.loadMask.show();
				Ext.Ajax.request({
					url: proxy_url,
					success: function(transport){
						var rows = Ext.util.JSON.decode(transport.responseText);

						var the_store = result_grid.getStore();

						var recs = new Array;
						Ext.each(rows,function(row){
							var new_row = {
								'series_title'	: row[0],
								'browse_title'	: row[1],
								'key'		: row[2],
								'platform'	: row[3],
								'platforms_id'	: row[4],
								'application'	: row[5],
								'version'	: row[6],
								'playing_time'	: row[7],
								'tutorial_count': row[8],
								'type'		: row[9],
								'series_url'	: row[10],
								'series_id'	: row[11],
								'series_type'	: row[12],
								'app_id'	: row[13],
								'cc'		: row[14]
							}
							var rec = new the_store.recordType(new_row,row[11]);
							recs.push(rec);
						});
						the_store.add(recs);

						apply_filters();
						if(use_preferred_filters){
							filter_filters(use_preferred_filters);
						}
						result_grid.loadMask.hide();
					}
				});
			},
          	scope: this
		},
		tbar: [
				preferred_filters_edit_link,
				'->',
				filters_checkbox
		]
	});
}

function build_browse_projects_results(){
	var empty_text = 'No results found. Please refine search.';
	if(has_preferred_filters){
     		empty_text += ' You can also try turning off preferred filters from the checkbox above.';
	}

	var BrowseRecord = Ext.data.Record.create([
			{name:'series_title', type: 'string'},
			{name:'browse_title', type: 'string'},
			{name:'key'},
			{name:'platform'},
			{name:'platforms_id'},
			{name:'application'},
			{name:'version'},
			{name:'subjects'},
			{name:'type'},
			{name:'preview'},
			{name:'series_url'},
			{name:'series_id'},
			{name:'series_type'},
			{name:'app_id'},
			{name:'age_level'},
			{name:'grade_level'}
	]);

	var group_on = 'browse_title';

	var store = new xd.GroupingStore({
			groupField: group_on,
			proxy: new xd.HttpProxy({
				url: proxy_url,
				timeout: 500000
			}),
			sortInfo: { field: 'browse_title', direction: 'ASC' },
            reader: new Ext.data.ArrayReader({},BrowseRecord)
	});

	var filters_checkbox = preferred_filters_checkbox('View Only Preferred Projects');

	grouping_view.emptyText = empty_text;

	var hide_age = false;
	if(age_level_header == ''){
		hide_age = true;
	}

	var grid = new xg.GridPanel({
		store: store,

		columns: [
			{id:'browse_title',header: "Tutorial Title", width: 105, sortable: true, dataIndex: 'browse_title' },
			{id:'series_title',header: "Series Title", width: 105, sortable: true, dataIndex: 'series_title', renderer: renderSeriesTitle },
			{id:'preview',  dataIndex: 'preview', header: 'Preview', renderer: renderPreviewMovie },
			{id:'type',  dataIndex: 'type', header: 'Type'},
			{id:'subjects',  dataIndex: 'subjects', header: 'Subject' },
			{id:'age_level',  dataIndex: age_level_data, header: age_level_header, hidden: hide_age}
		],
		view: grouping_view,
		width: 700,
		frame: true,
		collapsible: false,
		trackMouseOver: false,
		autoHeight: true,
		frame: true,
		collapsible: false,
		disableSelection: true,
		enableColumnHide: false,
		enableColumnMove: false,
		trackMouseOver: false,
		loadMask: true,

		id: 'results_grid',
		autoExpandColumn: 'series_title',
		title: 'Browsing Projects: ',
		iconCls: 'icon-grid',
		renderTo: 'browse_table',
		listeners: {
			'afterrender': function(result_grid){
				result_grid.loadMask.show();
				Ext.Ajax.request({
					url: proxy_url,
					success: function(transport){
						var rows = Ext.util.JSON.decode(transport.responseText);

						var the_store = result_grid.getStore();

						var recs = new Array;
						Ext.each(rows,function(row){
							var new_row = {
								'series_title'	: row[0],
								'browse_title'	: row[1],
								'key'			: row[2],
								'platform'		: row[3],
								'platforms_id'	: row[4],
								'application'	: row[5],
								'version'		: row[6],
								'subjects'		: row[7],
								'type'			: row[8],
								'preview'		: row[9],
								'series_url'	: row[10],
								'series_id'		: row[11],
								'series_type'	: row[12],
								'app_id'		: row[13],
								'age_level'		: row[14],
								'grade_level'	: row[15]
							}
							var rec = new the_store.recordType(new_row,row[11]);
							recs.push(rec);
						});
						the_store.add(recs);

						apply_filters();
						if(use_preferred_filters){
							filter_filters(use_preferred_filters);
						}
						result_grid.loadMask.hide();
					}
				});
			},
          	scope: this
		},
		tbar: 
			[
				preferred_filters_edit_link,
				'->',
				filters_checkbox
			]
	});
}

function build_browse_projects_21_results(){
	var empty_text = 'No results found. Please refine search.';
	if(has_preferred_filters){
     		empty_text += ' You can also try turning off preferred filters from the checkbox above.';
	}

	// shared reader
	var BrowseRecord = Ext.data.Record.create([
			{name:'series_title', type: 'string'},
			{name:'browse_title', type: 'string'},
			{name:'key'},
			{name:'platform'},
			{name:'platforms_id'},
			{name:'application'},
			{name:'version'},
			{name:'type'},
			{name:'concepts'},
			{name:'themes'},
			{name:'preview'},
			{name:'series_url'},
			{name:'series_id'},
			{name:'series_type'},
			{name:'app_id'}
	]);

	var group_on = 'concepts';

	var store = new xd.GroupingStore({
			groupField: group_on,
			proxy: new xd.HttpProxy({
				url: proxy_url,
				timeout: 500000
			}),
			sortInfo: { field: 'browse_title', direction: 'ASC' },
            reader: new Ext.data.ArrayReader({},BrowseRecord)
	});

	grouping_view.emptyText = empty_text;

	var grid = new xg.GridPanel({
		store: store,

		columns: [
			{id:'series_title',header: "Series Title", width: 105, sortable: true, dataIndex: 'series_title', renderer: renderSeriesTitle },
			{id:'preview',  dataIndex: 'preview', header: 'Preview', width: 70, renderer: renderPreviewMovie },
			{id:'type',  dataIndex: 'type', header: 'Type'},
			{id:'concepts',  dataIndex: 'concepts', header: '21st Century Concepts'},
			{id:'themes',  dataIndex: 'themes', header: 'Themes' },
			{id:'platform',header: "Platform", width: 80, sortable: true, dataIndex: 'platform'}
		],
		view: grouping_view,
		width: 700,
		frame: true,
		collapsible: false,
		trackMouseOver: false,
		autoHeight: true,
		frame: true,
		collapsible: false,
		disableSelection: true,
		enableColumnHide: false,
		enableColumnMove: false,
		trackMouseOver: false,
		loadMask: true,

		id: 'results_grid',
		autoExpandColumn: 'series_title',
		title: 'Browsing 21st Century Projects: ',
		iconCls: 'icon-grid',
		renderTo: 'browse_table',
		tbar: 
			[
				preferred_filters_edit_link
			]
	});

	// Once the data has loaded we need to parse out
	// the filters to update the select boxes
	store.on('load',function(store,records,opts){
		apply_filters();
		filter_filters(use_preferred_filters);
	});
	store.load({ params: { start: 0, limit: 25 } });
}

function setup_browse_forms() {
	// Override the submit action so we can append the filters
	$$('.browse_form').each(function(browse_form){
		browse_form.observe('submit',function(event){
			Event.stop(event);

			var browse_filters = new Object();
			$$('#' + this.id + ' .filter_select').each(function(filter){
				// default_opt checks to make sure we are not on the first option
				// which is not actually a valid option
				var default_opt = new RegExp('^'+_get_filter_name(filter.id),'i');
				if(filter.value > '' && default_opt.test(filter.value) == false){
					browse_filters[filter.id] = filter.value;
				}
			});
			$$('#' + this.id + ' .all_filters').first().value = $H(browse_filters).toJSON();

			this.submit();
		});
	});
}

// Adjust the filter name. Called from browse_search_utility.js
// For Browse the filter names are just plural so we drop the 's'
function adjust_filter_name(filter_name){
	filter_name = filter_name.substring(0,filter_name.indexOf('_')); 
	switch(filter_name){
		// Age levels has specialness
		case 'age':
			filter_name = 'age_level';
			break;
		case 'grade':
			filter_name = 'grade_level';
			break;
		case 'version':
			break;
		case 'concepts':
			break;
		case 'themes':
			break;
		case 'subjects':
			break;
		default:
			filter_name = filter_name.substr(0,filter_name.length-1);
	}
	return filter_name;
}

function filter_filters(checked){
	if(current_page == 'tutorials'){
		filter_tutorial_filters(checked);
	} else if (current_page == 'projects') {
		filter_project_filters(checked);
	} 
}
