
    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/>\
								<label><input type="checkbox" name="newsletter" value="yes" CHECKED=""/>Sign up for free newsletter</label></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;
	}