<!-- 
noVNC Example: Automatically connect on page load.

Connect parameters are provided in query string:
    http://example.com/?host=HOST&port=PORT&encrypt=1&true_color=1
-->
<html>
    <head>
        <title>VNC Client</title>
        <link rel="stylesheet" href="include/plain.css">
        <!--
        <script type='text/javascript' 
            src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
        -->
        <script src="include/vnc.js"></script>
    </head>

    <body style="margin: 0px;">
        <div id="VNC_screen">
            <div id="VNC_status_bar" class="VNC_status_bar" style="margin-top: 0px;">
                <table border=0 width=100%><tr>
                    <td><div id="VNC_status">Loading</div></td>
                    <td width=10%><div id="VNC_buttons">
                        <input type=button value="Send CtrlAltDel"
                            id="sendCtrlAltDelButton"
                            onclick="sendCtrlAltDel();"></div></td>
                </tr></table>
            </div>
            <canvas id="VNC_canvas" width="640px" height="20px">
                Canvas not supported.
            </canvas>
        </div>
    </body>

    <script>
        function setPassword() {
            RFB.sendPassword($('password_input').value);
            return false;
        }
        function sendCtrlAltDel() {
            RFB.sendCtrlAltDel();
        }
        function updateState(state, msg) {
            var s, sb, klass, html;
            s = $('VNC_status');
            sb = $('VNC_status_bar');
            cad = $('sendCtrlAltDelButton');
            switch (state) {
                case 'failed':
                case 'fatal':
                    klass = "VNC_status_error";
                    break;
                case 'normal':
                    klass = "VNC_status_normal";
                    break;
                case 'disconnected':
                case 'loaded':
                    klass = "VNC_status_normal";
                    break;
                case 'password':
                    msg = '<form onsubmit="return setPassword();"';
                    msg += '  style="margin-bottom: 0px">';
                    msg += 'Password Required: ';
                    msg += '<input type=password size=10 id="password_input" class="VNC_status">';
                    msg += '</form>';
                    // Fall through
                default:
                    klass = "VNC_status_warn";
            }

            if (state === "normal") { cad.disabled = false; }
            else                    { cad.disabled = true; }

            if (typeof(msg) !== 'undefined') {
                sb.setAttribute("class", klass);
                s.innerHTML = msg;
            }
        }

        window.onload = function () {
            var host, port, password, encrypt;

            url = document.location.href;
            host = (url.match(/host=([A-Za-z0-9.\-]*)/) || ['',''])[1];
            port = (url.match(/port=([0-9]*)/) || ['',''])[1];
            password = (url.match(/password=([^&#]*)/) || ['',''])[1];
            encrypt = (url.match(/encrypt=([A-Za-z0-9]*)/) || ['',1])[1];
            true_color = (url.match(/true_color=([A-Za-z0-9]*)/) || ['',1])[1];
            if ((!host) || (!port)) {
                updateState('failed',
                    "Must specify host and port in URL");
                return;
            }

            RFB.setUpdateState(updateState);
            RFB.load();
            RFB.connect(host, port, password, encrypt, true_color);
        }
    </script>
</html>