(function(){
var groups = {
'family_relations': {
'name': 'Family relations',
'problems': [
{'id': 'ancestor_2', 'name': 'ancestor/2'},
{'id': 'aunt_2', 'name': 'aunt/2'},
{'id': 'brother_2', 'name': 'brother/2'},
{'id': 'connected_3', 'name': 'connected/3'},
{'id': 'cousin_2', 'name': 'cousin/2'}
]
},
'lists': {
'name': 'Lists',
'problems': [
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''}
]
},
'sorting': {
'name': 'Sorting',
'problems': [
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''}
]
},
'other': {
'name': 'Other',
'problems': [
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''}
]
},
'sets': {
'name': 'Sets',
'problems': [
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''}
]
},
'trees': {
'name': 'Trees',
'problems': [
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''}
]
},
'license_plates': {
'name': 'License plates',
},
'clp_fd': {
'name': 'CLP(FD',
'problems': [
{'id': 'gcd_3', 'name': 'gcd/3'},
{'id': 'magic_1', 'name': 'magic/1'},
{'id': 'puzzle_abc_3', 'name': 'puzzle_abc/3'},
{'id': 'puzzle_beth_1', 'name': 'puzzle_beth/1'},
{'id': 'puzzle_momson_2', 'name': 'puzzle_momson/2'},
{'id': 'puzzle_ratio_2', 'name': 'puzzle_ratio/2'},
{'id': 'tobase_3', 'name': 'tobase/3'}
]
},
'clp_r': {
'name': 'CLP(R)',
'problems': [
{'id': 'bounding_box_3', 'name': 'bounding_box/3'},
{'id': 'center_3', 'name': 'center/3'},
{'id': 'linear_opts_3', 'name': 'linear_opts/3'},
{'id': 'max_sum_2', 'name': 'max_sum/2'},
{'id': 'megabytes_2', 'name': 'megabytes/2'},
{'id': 'turkey_3', 'name': 'turkey/3'}
]
},
'dcg': {
'name': 'DCG',
'problems': [
{'id': 'ab_2', 'name': 'ab/2'},
{'id': 'digit_2', 'name': 'digit/2'},
{'id': 'expr_2', 'name': 'expr/2'},
{'id': 'expr_3', 'name': 'expr/3'},
{'id': 'flower_2', 'name': 'flower/2'}
]
},
'denotational_semantics': {
'name': 'Denotational semantics',
'problems': [
{'id': 'algol_3', 'name': 'algol/3'},
{'id': 'algol_for_3', 'name': 'algol_for/3'},
{'id': 'algol_if_3', 'name': 'algol_if/3'},
{'id': 'prog_8puzzle_2', 'name': 'prog_8puzzle/2'},
{'id': 'prog_8puzzle_3', 'name': 'prog_8puzzle/3'}
]
},
'old_exams': {
'name': 'Old exams',
'problems': [
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''},
{'id': '', 'name': ''}
]
}
};
$("#submit").on('click', function () {
var group = $('#problem_group').val(),
problem = $('#problems').val();
if (!group) alert('Choose a problem group');
else if (!problem) alert('Choose a problem');
else {
$.ajax({
'type': 'POST',
'url': '/codeq/login',
'accepts': 'application/json',
'contentType': 'application/json; charset=UTF-8',
'data': JSON.stringify({
'username': $('#username').val(),
'password': $('#password').val()
}),
'processData': false,
'dataType': 'json',
'error': function loginErrorHandler(jqXHR, textStatus, errorThrown) {
alert('Request for login failed: ' + (errorThrown || textStatus));
},
'success': function loginSuccessHandler(data, textStatus, jqXHR) {
if (data && (data.code === 0)) {
window.location = 'prolog.html#sid=' + data.sid + '/grp=' + group + '/prb=' + problem;
}
else {
alert('Login failed: code=' + data.code + ', reason=' + data.message);
}
}
});
}
});
$(document).ready(function () {
var jqGroup = $('#problem_group'),
jqProblems = $('#problems'),
id, g, first_group, html = [];
for (id in groups) {
g = groups[id];
html.push('\n');
}
jqGroup.html(html.join(''));
first_group = html[1];
html = null;
jqGroup.on('click', function () {
var g = groups[jqGroup.val()],
html = [],
problems, i, p;
if (g) {
problems = g.problems;
for (i = 0; i < problems.length; i++) {
p = problems[i];
if (!p.id) continue;
html.push('\n')
}
}
jqProblems.html(html.join(''));
});
jqGroup.val(first_group);
});
})();