+};
+
+$.fn.login = function () {
+ var username = this.find("input[name='username']").val();
+ var password = this.find("input[name='pass']").val();
+ var force = this.find("input[name='force']").is(":checked");
+ var url = mctx.api + "control";
+
+ var authFunc = function(xhr) {
+ xhr.setRequestHeader("Authorization",
+ "Basic " + base64.encode(username + ":" + password));
+ };
+
+ $.ajax({
+ url : url,
+ data : {action : "lock", force : (force ? true : undefined)},
+ beforeSend : authFunc
+ }).done(function (data) {
+ mctx.key = data.key;
+ if (data.status < 0) {
+ alert("no - " + data.description);
+ } else {
+ mctx.has_control = true;
+ alert("yes - " + mctx.key);
+ }
+ }).fail(function (jqXHR) {
+ mctx.key = undefined;
+ mctx.has_control = false;
+ alert("no");
+ });
+};
+
+$.fn.setErrorLog = function () {
+ var url = mctx.api + "errorlog";
+ var outdiv = this;
+
+ var updater = function () {
+ $.ajax({url : url}).done(function (data) {
+ outdiv.text(data);
+ setTimeout(updater, 1000);
+ }).fail(function (jqXHR) {
+ outdiv.text("Failed to retrieve the error log.");
+ });
+ };
+
+ updater();
+};
+
+$(document).ajaxError(function (event, jqXHR) {
+ //console.log("AJAX query failed with: " + jqXHR.status + " (" + jqXHR.statusText + ")");
+});
\ No newline at end of file