// @version v1.0.0 2010-04-16 11:30
var listController = {
	
	listIDs: {1: 'Left', 2: 'Right'},
	listLeftBaseURL: '',
	listRightBaseURL: '',
	// list left status
	currSort: '',
	currCatID: '',
	currSearchString: '',
	currPage: 1,
	
	listLoading: false,
	
	setCategory: function(catID){
		if(this.currCatID == catID){
			return;
		}
		
		var url = this.listLeftBaseURL + '&cid=' + catID + '&sort=' + this.currSort + '&page=1&search=' + this.currSearchString;
		this.loadList(1, url);
		
		this.currCatID = catID;
		this.currPage = 1;
	},
	
	setSort: function(sort){
		if(this.currSort == sort){
			return;
		}
		
		var url = this.listLeftBaseURL + '&cid=' + this.currCatID + '&sort=' + sort + '&page=' + this.currPage + '&search=' + this.currSearchString;
		this.loadList(1, url);
		
		this.currSort = sort;
	},
	
	setPageLeft: function(page){
		var url = this.listLeftBaseURL + '&cid=' + this.currCatID + '&sort=' + this.currSort + '&page=' + page + '&search=' + this.currSearchString;
		this.loadList(1, url);
		this.currPage = page;
	},
	
	setSearchString: function(){
		var searchString = encodeURIComponent($('#searchStringInput').val());
		if(searchString == this.currSearchString){
			return;
		}
		
		var url = this.listLeftBaseURL + '&cid=' + this.currCatID + '&sort=' + this.currSort + '&page=1&search=' + searchString;
		this.loadList(1, url);
		
		this.currSearchString = searchString;
		this.currPage = 1;
	},
	
	setPageRight: function(page){
		var url = this.listRightBaseURL + '&page=' + page;
		this.loadList(2, url);
	},
	
	loadList: function(listID, requestURL){
		if(this.listLoading){
			return;
		}
		
		var self = this;
		this.listLoading = true;
		var listSID = this.listIDs[listID];
		var containerObj = $('#gameListContainer' + listSID);
		
		containerObj.animate({height: 'toggle', opacity: 0}, 500,
			function(){
				$(this).html('');
				$.ajax({
					url: requestURL,
					type: 'GET',
					dataType: 'json',
					success: function(data){
						if(data == null){
							alert('Error: Unable to load game list. Please try refreshing the current page.');
							return;
						}
						containerObj.html(data.listHTML);
						$('#gamePageLinks' + listSID + 'Top').html(data.pageLinksHTML);
						$('#gamePageLinks' + listSID + 'Bottom').html(data.pageLinksHTML);
						containerObj.animate({height: 'toggle', opacity: 1.0}, 500);
						
						// refresh sifr
						if(listID == 1){
							sifrReplaceGameListLeft();
						}else{
							sifrReplaceGameListRight();
						}
					},
					complete: function(){
						self.listLoading = false;
					}
				});
			});
	}
};
