1var batcheditServer = (function () {
2    var cookie = '{7b4e584c-bf85-4f7b-953b-15e327df08ff}';
3    var session = null;
4    var transaction = null;
5
6    function initialize() {
7        session = jQuery('input[name=session]').val();
8    }
9
10    function sendRequest(request, data, onSuccess, onError) {
11        if (transaction != null) {
12            return false;
13        }
14
15        data.append('call', 'batchedit');
16        data.append('session', jQuery('input[name=session]').val());
17        data.append('command', request);
18
19        transaction = request;
20
21        function errorHandler(status, message) {
22            console.log(status + ': ' + message);
23
24            if (typeof onError != 'undefined') {
25                onError(status, message);
26            }
27        }
28
29        jQuery.ajax({
30            cache : false,
31            data : data,
32            processData: false,
33            contentType: false,
34            global : false,
35            type : 'POST',
36            timeout : 1000,
37            url : DOKU_BASE + 'lib/exe/ajax.php',
38            success : function (data) {
39                if (typeof data != 'object') {
40                    errorHandler('invalid_data', 'Invalid data type');
41                    return;
42                }
43
44                if (data.hasOwnProperty('error')) {
45                    errorHandler(data['error'], data['message']);
46                    return;
47                }
48
49                if (typeof onSuccess != 'undefined') {
50                    onSuccess(data);
51                }
52            },
53            error : function (xhr, status, message) {
54                errorHandler(transaction + '_failed', message);
55            },
56            dataFilter : function (data) {
57                var match = data.match(new RegExp(cookie + '(.+?)' + cookie));
58
59                if ((match == null) || (match.length != 2)) {
60                    return '{"error":"invalid_data","message":"Malformed response"}';
61                }
62
63                return match[1];
64            },
65            complete : function () {
66                transaction = null;
67            }
68        });
69
70        return true;
71    }
72
73    function checkProgress(onSuccess, onError) {
74        return sendRequest('progress', new FormData(), onSuccess, onError);
75    }
76
77    function cancelOperation(onSuccess, onError) {
78        return sendRequest('cancel', new FormData(), onSuccess, onError);
79    }
80
81    return {
82        initialize : initialize,
83        checkProgress : checkProgress,
84        cancelOperation : cancelOperation
85    }
86})();
87
88jQuery(function () {
89    batcheditServer.initialize();
90});
91