1d4afb5ceSopenharmony_civar head = 0, tail = 0, ring = new Array();
2d4afb5ceSopenharmony_ci
3d4afb5ceSopenharmony_cifunction get_appropriate_ws_url(extra_url)
4d4afb5ceSopenharmony_ci{
5d4afb5ceSopenharmony_ci	var pcol;
6d4afb5ceSopenharmony_ci	var u = document.URL;
7d4afb5ceSopenharmony_ci
8d4afb5ceSopenharmony_ci	/*
9d4afb5ceSopenharmony_ci	 * We open the websocket encrypted if this page came on an
10d4afb5ceSopenharmony_ci	 * https:// url itself, otherwise unencrypted
11d4afb5ceSopenharmony_ci	 */
12d4afb5ceSopenharmony_ci
13d4afb5ceSopenharmony_ci	if (u.substring(0, 5) === "https") {
14d4afb5ceSopenharmony_ci		pcol = "wss://";
15d4afb5ceSopenharmony_ci		u = u.substr(8);
16d4afb5ceSopenharmony_ci	} else {
17d4afb5ceSopenharmony_ci		pcol = "ws://";
18d4afb5ceSopenharmony_ci		if (u.substring(0, 4) === "http")
19d4afb5ceSopenharmony_ci			u = u.substr(7);
20d4afb5ceSopenharmony_ci	}
21d4afb5ceSopenharmony_ci
22d4afb5ceSopenharmony_ci	u = u.split("/");
23d4afb5ceSopenharmony_ci
24d4afb5ceSopenharmony_ci	/* + "/xxx" bit is for IE10 workaround */
25d4afb5ceSopenharmony_ci
26d4afb5ceSopenharmony_ci	return pcol + u[0] + "/" + extra_url;
27d4afb5ceSopenharmony_ci}
28d4afb5ceSopenharmony_ci
29d4afb5ceSopenharmony_cifunction new_ws(urlpath, protocol)
30d4afb5ceSopenharmony_ci{
31d4afb5ceSopenharmony_ci	return new WebSocket(urlpath, protocol);
32d4afb5ceSopenharmony_ci}
33d4afb5ceSopenharmony_ci
34d4afb5ceSopenharmony_cidocument.addEventListener("DOMContentLoaded", function() {
35d4afb5ceSopenharmony_ci
36d4afb5ceSopenharmony_ci	var ws = new_ws(get_appropriate_ws_url(""), "lws-minimal-proxy");
37d4afb5ceSopenharmony_ci	try {
38d4afb5ceSopenharmony_ci		ws.onopen = function() {
39d4afb5ceSopenharmony_ci			document.getElementById("r").disabled = 0;
40d4afb5ceSopenharmony_ci		};
41d4afb5ceSopenharmony_ci
42d4afb5ceSopenharmony_ci		ws.onmessage =function got_packet(msg) {
43d4afb5ceSopenharmony_ci			var n, s = "";
44d4afb5ceSopenharmony_ci
45d4afb5ceSopenharmony_ci			ring[head] = msg.data + "\n";
46d4afb5ceSopenharmony_ci			head = (head + 1) % 20;
47d4afb5ceSopenharmony_ci			if (tail === head)
48d4afb5ceSopenharmony_ci				tail = (tail + 1) % 20;
49d4afb5ceSopenharmony_ci
50d4afb5ceSopenharmony_ci			n = tail;
51d4afb5ceSopenharmony_ci			do {
52d4afb5ceSopenharmony_ci				s = s + ring[n];
53d4afb5ceSopenharmony_ci				n = (n + 1) % 20;
54d4afb5ceSopenharmony_ci			} while (n !== head);
55d4afb5ceSopenharmony_ci
56d4afb5ceSopenharmony_ci			document.getElementById("r").value = s;
57d4afb5ceSopenharmony_ci			document.getElementById("r").scrollTop =
58d4afb5ceSopenharmony_ci				document.getElementById("r").scrollHeight;
59d4afb5ceSopenharmony_ci		};
60d4afb5ceSopenharmony_ci
61d4afb5ceSopenharmony_ci		ws.onclose = function(){
62d4afb5ceSopenharmony_ci			document.getElementById("r").disabled = 1;
63d4afb5ceSopenharmony_ci		};
64d4afb5ceSopenharmony_ci	} catch(exception) {
65d4afb5ceSopenharmony_ci		alert("<p>Error " + exception);
66d4afb5ceSopenharmony_ci	}
67d4afb5ceSopenharmony_ci}, false);
68