$(document).ready(function(){
	
	$('#type a').click(function(){

		var value = $(this).attr('id');
		showSelectedValue(value,'type');
		populateCategories(value);
		closePopups();
		return false;
	});
	
	$('#category a').live('click',function(){

		var value = $(this).attr('id');
		showSelectedValue(value,'category');
		closePopups();
		return false;
	});
	
	$('#sorting a').live('click',function(){

		var value = $(this).attr('id');
		showSelectedValue(value,'sorting');
		closePopups();
		return false;
	});
	
	$('#rc-load-more').live('click',function(){
		var type = $('#type-current').attr('data-id');
		var category = $('#category-current').attr('data-id');
		var sorting = $('#sorting-current').attr('data-id');
		var page = parseInt($('#rc-list').data('page'));
		page++;
		$('#rc-list').data('page',page);
		populateList(type,category,sorting,page);
	});
	
	if(window.location.hash)
		{
		var hash = window.location.hash;
		var parts = hash.split('/');
		var type = parts[1];
		var category = parts[2];
		var sorting = parts[3];
		if(type == 'all' && category == 'all')
			{
			populateListAll();
			populateCategories($('#type-current').attr('data-id'));
			}
		else
			{
			$('#category').data('savedCategory',category);
			showSelectedValueNoUpdate(sorting,'sorting');
			populateCategories(type);
			showSelectedValue(type,'type');
			}
		}
	else
		{
		var type = $('#type-current').attr('data-id');
		var category = $('#category-current').attr('data-id');
		var sorting = $('#sorting-current').attr('data-id');
		populateList(type,category,sorting,1);
		populateCategories(type);
		}
	
});

function populateListAll()
	{
	$('#rc-load-more:visible').hide();
	$('#rc-list').empty();
	grabJSON('card-list-json-all','populateListAllJSON','');
	}

function populateListAllJSON(json)
	{
	$('#rc-loading').hide(1,function(){ for(i in json.card) { $('#rc-list').append(json.card[i]); } });
	}

function populateList(type,category,sorting,page)
	{
	var limit = 15;
	$('#rc-load-more:visible').hide();
	$('#rc-list').data('page',page)
	$('#rc-list').data('limit',limit);
	if(page == 1) $('#rc-list').empty();
	var category = (category == 'all') ? '' : category ;
	var data = 'type='+type+'&category='+category+'&limit='+limit+'&page='+page+'&sorting='+sorting;
	grabJSON('card-list-json','populateListJSON',data);
	}

function populateListJSON(json)
	{
	$('#rc-list').data('total',json.total);
	if(json.total > 0)
		{
		$('#rc-loading').hide(1,function(){
			for(i in json.card) { $('#rc-list').append(json.card[i]); }
			var cardsShown = $('#rc-list .scorecard').length;
			if(json.total > cardsShown) $('#rc-load-more').fadeIn('slow');
			});
		}
	else
		{
		$('#rc-loading').hide(1,function(){ $('#rc-no-results').show(); });
		}
	}

function populateCategories(type)
	{
	$('#category-current').text($('#category a:eq(0)').text()).attr('data-id',$('#category a:eq(0)').attr('id'));
	$('#category a:eq(0)').addClass('selectedOption').next().nextAll().remove();
	grabJSON('list-category-json/'+type,'populateCategoriesJSON','');
	}
	
function populateCategoriesJSON(json)
	{
	for(i in json)
		{
		var name = json[i];
		var id = json[i].replace(/\//g,'^').replace(/ /g,'_').toLowerCase();
		$('#category').append('<a id="'+id+'" href="" title="">'+name+'</a><br />');
		}
	if($('#category').data('savedCategory'))
		{
		category = $('#category').data('savedCategory');
		$('#category').data('savedCategory','');
		showSelectedValue(category,'category');
		}
	}

function updateHash(typeChange)
	{
	var type = $('#type-current').attr('data-id');
	var sorting = $('#sorting-current').attr('data-id');
	if(!$('#category').data('savedCategory'))
		{
		var category = (typeChange == 'type') ? $('#category a:eq(0)').attr('id') : $('#category-current').attr('data-id') ;
		window.location.hash = '/'+type+'/'+category+'/'+sorting+'/';
		populateList(type,category,sorting,1);
		}
	}

function showSelectedValue(sortValue,type)
	{
	$('#rc-no-results').hide();
	$('#rc-loading').show();	
	var selected = $('#'+type+' a[id="'+sortValue+'"]');
	var selectedText = selected.text();
	selected.parent().find('a').removeClass('selectedOption');
	selected.addClass('selectedOption');
	$('#'+type+'-current').text(selectedText).attr('data-id',sortValue);
	updateHash(type);
	}
	
function showSelectedValueNoUpdate(sortValue,type)
	{
	var selected = $('#'+type+' a[id="'+sortValue+'"]');
	var selectedText = selected.text();
	selected.parent().find('a').removeClass('selectedOption');
	selected.addClass('selectedOption');
	$('#'+type+'-current').text(selectedText).attr('data-id',sortValue);
	}

function closePopups() { $('#recap .review-cards-tools .recap_sort_holder .popup:visible').hide(); }
	
function grabJSON(action,callback,theData)
	{
	$.ajax({
  		url: 'http://services.weblogsinc.com/21/review-cards/'+action+'?'+callback+'=?',
 		dataType: 'json',
 		cache: true,
 		data: theData
		});
	}
