1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
(function(){
var urlPrefix = '/svc/';
$(document).ready(function () {
$.ajax({
'type': 'POST',
'url': urlPrefix + 'list_problems',
'accepts': 'application/json',
'contentType': 'application/json; charset=UTF-8',
'data': JSON.stringify({}),
'processData': false,
'dataType': 'json',
'error': function loginErrorHandler(jqXHR, textStatus, errorThrown) {
$('#disabled').css('cursor', '');
alert('Request to obtain list of problems failed: ' + (errorThrown || textStatus));
},
'success': function loginSuccessHandler(data, textStatus, jqXHR) {
var i, groups, group, problems, problem, first_group,
jqGroup = $('#problem_group'),
jqProblems = $('#problems'),
html = [],
mapping = {}
onGroupChange = function () {
var problems = mapping[jqGroup.val()],
html = [],
i, p;
if (problems) {
for (i = 0; i < problems.length; i++) {
p = problems[i];
html.push('<option value="', p.identifier, '">', p.name, '</option>\n')
}
}
jqProblems.html(html.join(''));
};
if (data && (data.code === 0)) {
$('#disabled').css('display', 'none');
groups = data.problems;
for (i = 0; i < groups.length; i++) {
group = groups[i];
var identifier = group.identifier.language + '/' + group.identifier.group;
var name = group.name.language + ': ' + group.name.group;
html.push('<option value="', identifier, '">', name, '</option>\n');
mapping[identifier] = group.problems;
}
jqGroup.html(html.join(''));
first_group = html[1];
html = null;
jqGroup.on('click', onGroupChange);
jqGroup.val(first_group);
onGroupChange();
$("#submit").on('click', function () {
var identifier = $('#problem_group').val().split('/'),
problem = $('#problems').val();
if (identifier.length < 2) alert('Choose a problem group');
else if (!problem) alert('Choose a problem');
else {
$.ajax({
'type': 'POST',
'url': urlPrefix + '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 = identifier[0] + '.html#sid=' + data.sid + '/lang=' + identifier[0] + '/grp=' + identifier[1] + '/prb=' + problem;
}
else {
alert('Login failed: code=' + data.code + ', reason=' + data.message);
}
}
});
}
});
}
else {
$('#disabled').css('cursor', '');
alert('Obtaining list of problems failed: code=' + data.code + ', reason=' + data.message);
}
}
});
});
})();
|