function parse_url() {
	var segments = location.pathname.substr(1).split('/');

	if (!segments.length) return;
	var ds = false;
	if (segments[0] != 'parts' && segments[0].split('.').shift() == 'parts' && segments[0] != 'search' && segments[0].split('.').shift() == 'search') {
		segments[0] = segments[0].split('.').slice(1).join('.');
		ds = true;
	}
	else {
		segments.shift(); // "parts"
	}
	
	if (!segments.length) return;
	
	var top = segments.pop();
	
	var filters = top.split('.');
	if (!ds) segments.push(filters.shift());
	var kvfilters = [];
	for (var filter in filters) {
		var kv = filters[filter].split('-');
		kvfilters[kv[0]] = kv[1];
	}
	return {'segments': segments, 'filters': kvfilters};
}

function compose_url(parsed) {
	var segments = parsed.segments.join('/');
	for (var filter in parsed.filters) {
		if (!parsed.filters[filter]) continue;
		segments += '.' + filter + '-' + parsed.filters[filter];
	}
	return ('/' + location.pathname.substr(1).split('/').shift() + '/' + segments).replace('/.', '.');
}

function add_filter(key, val) {
	var parsed = parse_url();
	if (key == 'perpage' && parsed.filters.page) {
		var old_perpage = parsed.filters.perpage || 6;
		if (old_perpage != val) {
			var page = parsed.filters.page;
			var old_idxstart = (page - 1) * old_perpage;
			var new_page = Math.floor(old_idxstart / val);
			parsed.filters.page = new_page;
		}
	}
	parsed.filters[key] = val;
	location.pathname = compose_url(parsed);
}

$(function() {
	$('#per_page').kaSelect({
		width: 110,
		height: 17,
		padding: 7,
		images: [
			'/skin/rocketcentre/image/common/dropdown-left.png',
			'/skin/rocketcentre/image/common/dropdown-right.png'
		],
		change: function(val) { add_filter('perpage', val); }
	});
	$('#sort').kaSelect({
		width: 174,
		height: 17,
		padding: 7,
		images: [
			'/skin/rocketcentre/image/common/dropdown-left.png',
			'/skin/rocketcentre/image/common/dropdown-right.png'
		],
		margin: [0, 0, 0, 10],
		change: function(val) { add_filter('sort', val); }
	});
});
