
    function OpenLoginDlg()
    {
        var regDialog = OpenDialog( 280, 200, 'Login' );
        regDialog.innerHTML = '\
        <div style="padding:2px 20px 20px 2px;">\
            <form action="" method="post" name="LoginForm">\
                <table style="border-collapse:collapse;color:#888; width:200px; margin-left:auto; margin-right:auto; margin-top:10px;">\
                    <tr>\
                        <td>Username:&nbsp;&nbsp;</td>\
                        <td style="padding-right:5px;"><input type="text" name="username" value="" style="width:120px;"/></td>\
                    </tr>\
                    <tr>\
                        <td>Password:&nbsp;&nbsp;</td>\
                        <td style="padding-right:5px;"><input type="password" name="pass" style="width:120px;"/></td>\
                    </tr>\
                    <tr>\
                        <td></td>\
                        <td style="text-align:right;"><input type="Submit" value="Login" name="op"/></td>\
                    </tr>\
                </table>\
                <input type="hidden" name="auto" value="yes"/>\
            </form>\
        </div>';
        return false;
    }

    function OpenRegisterDlg()
    {
        var regDialog = OpenDialog( 280, 300, 'Register' );
        regDialog.innerHTML = '\
        <div style="padding:2px 20px 20px 2px;">\
            <form id="regForm" onsubmit="return false;">\
                <div style="text-align:left;">\
                    <TABLE class="mi" style="margin-left:auto;margin-right:auto;margin-top:10px;">\
                        <TR>\
                            <TD>Username:</TD>\
                            <TD><input type="text" name="username" size="20"/></TD>\
                        </TR>\
                        <TR>\
                            <TD>E-mail:</TD>\
                            <TD><input type="text" name="email" size="20"/></TD>\
                        </TR>\
                        <TR><TD colspan="2"><br/>Please choose a password:<br/><br/></TD></TR>\
                        <TR>\
                            <TD>Password:</TD>\
                            <TD><input type="password" name="pass" id="pass1" size="20"/></TD>\
                        </TR>\
                        <TR>\
                            <TD>Verify:</TD>\
                            <TD><input type="password" id="pass2" size="20"/></TD>\
                        </TR>\
                        <TR>\
                            <TD colspan="2"><label><input type="checkbox" name="auto" value="yes" CHECKED=""/>Remember me</label><br/>\
                            <input type="hidden" name="newsletter" value="yes"/></TD>\
                        </TR>\
                        <!--TR><TD colspan="2"><br/><a href="#" onclick="return OpenExtraInfoDialog();">Add optional extra information</a><br/>&nbsp;</TD></TR-->\
                    </TABLE>\
                </div>\
                <input type="hidden" name="organisationType" value="individual"></input>\
                <input type="hidden" name="fullname" value=""></input>\
                <input type="hidden" name="city" value=""></input>\
                <input type="hidden" name="tel" value=""></input>\
                <div style="text-align:right;">\
                    <input type="button" value="Add User" name="op" onclick="regUser();"/>\
                    <input type="button" value="Close" onclick="CancelDialog();"/>\
                </div>\
            </form>\
        </div>';
        return false;
    }

    function OpenExtraInfoDialog()
    {
        var extraDialog = OpenDialog( 400, 300, 'Optional information' );
        extraDialog.innerHTML = '\
        <div style="padding:2px 20px 20px 2px;">\
            <form id="extraInfoForm">\
                <div style="text-align:left;">\
                    <TABLE class="mi" style="margin-left:auto;margin-right:auto;">\
                        <TR><TD colspan="2"><br/>Optional information:</TD></TR>\
                        <TR>\
                            <TD>Full name:</TD>\
                            <TD><input type="text" name="fullname" size="20"/></TD>\
                        </TR>\
                        <TR>\
                            <TD>City:</TD>\
                            <TD><input type="text" name="city" size="20"/></TD>\
                        </TR>\
                        <TR>\
                            <TD>I am:</TD>\
                            <TD><SELECT name="organisationType">\
                                    <option value="individual">an individual</option>\
                                    <option value="business">a business</option>\
                                </SELECT></TD>\
                        </TR>\
                        <TR>\
                            <TD>Telephone No.:</TD>\
                            <TD><input type="text" name="tel" size="20"/></TD>\
                        </TR>\
                    </TABLE>\
                </div>\
                <div style="text-align:right;">\
                    <input type="button" value="Ok" onclick="CopyExtraInfo();"/>\
                    <input type="button" value="Cancel" onclick="CancelDialog();"/>\
                </div>\
            </form>\
        </div>';

        ExtraInfoTransfer( GetElem( 'regForm' ), GetElem( 'extraInfoForm' ) );

        return false;
    }
    function CopyExtraInfo()
    {
        ExtraInfoTransfer( GetElem( 'extraInfoForm' ), GetElem( 'regForm' ) );
        CancelDialog();
    }
    function ExtraInfoTransfer( _from, _to )
    {
        _to.tel.value = _from.tel.value;
        _to.organisationType.value = _from.organisationType.value;
        _to.fullname.value = _from.fullname.value;
        _to.city.value = _from.city.value;
    }

    function Logout()
    {
        GetElem('logoutForm').submit();
    }

    var regProgressDlg = null;
    function regUser()
    {
        var frm = GetElem("regForm");
        if ( checkPasses( frm ) )
        {
            var pass = frm.pass1.value;
            var username = frm.username.value;
            var fullname = frm.fullname.value;
            var city = frm.city.value;
            var auto = (frm.auto.checked?frm.auto.value:0);
            var newsletter = (frm.newsletter.checked?frm.newsletter.value:0);
            var orgType = frm.organisationType.value;
            var email = frm.email.value;
            var tel = frm.tel.value;

            regProgressDialog = OpenDialog( 300, 160, 'Processing' );
            regProgressDialog.innerHTML = '\
            <div style="padding:20px 20px 20px 20px;">\
                <div id="regProgressState">\
                    Please wait... contacting server\
                </div><br/><br/>\
                <form>\
                    <input type="button" value="Close" id="regProgressCloseBtn" disabled="true" onclick="CancelDialog();"/>\
                </form>\
            </div>';

            var url = "library/newuser.php?op=AddUser&username="+encodeURIComponent(username)+"&pass="+encodeURIComponent(pass)+"&email="+encodeURIComponent(email)+"&auto="+encodeURIComponent(auto)+"&newsletter="+encodeURIComponent(newsletter)+"&organisationType="+encodeURIComponent(orgType)+"&tel="+encodeURIComponent(tel)+"&fullname="+encodeURIComponent(fullname)+"&city="+encodeURIComponent(city);
            RequestURL( url, null, "RegReceiveData", ReceiveRegData );
        }
    }

    function Refresh()
    {
        location.href=location.href+'';
    }

    function ReceiveRegData()
    {
        var state = GetElem("regProgressState");
        var btn = GetElem( "regProgressCloseBtn" );

        var datablock = GetElem( 'RegReceiveData' );
        if ( datablock && datablock.childNodes.length && datablock.childNodes[0].getAttribute ) 
        {
            datablock = datablock.childNodes[0];
            state.innerHTML = datablock.getAttribute( 'html' );
            if ( datablock.getAttribute( 'result' ) == "1" )
            {
                btn.onclick = Refresh;
            }
        }
        else
        {
            state.innerHTML = "Failure contacting server.";
        }
        btn.disabled = false;
    }

    function checkPasses( obj )
    {
        var p1 = obj.pass1.value;
        var p2 = obj.pass2.value;

        //Check passwords:
        if ( p1 != p2 )
        {
            alert("Passwords do not match!");
            return false;
        }

        //check Username:
        if ( obj.username.value.length < 2 )
        {
            alert("Username not long enough! (min 2 characters)");
            return false;
        }

        //check some e-mail
        if ( obj.email.value.length<2 )
        {
            if ( !confirm("No e-mail address entered - you will not be able to receive newsletters or receive responses to messages you send on this site... is this ok?" ) )
            {
                return false;
            }
        }

        return true;
    }