robert@0: var showingLoggedIn = false; robert@0: var messageElement = false; robert@0: var messageP = false; robert@0: robert@0: // focusField method: called when username and password gain focus robert@0: function focusField() robert@0: { robert@0: try { robert@0: if (messageElement != false) robert@0: { robert@0: document.getElementById('message').removeChild(messageElement); robert@0: } robert@0: getSeed(); robert@0: } robert@0: catch (e) robert@0: { } // do nothing... hides an apparent firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=236791 robert@0: } robert@0: robert@0: // blurField method: called when username and password are blurred robert@0: function blurField() robert@0: { robert@0: try { robert@0: validateLogin(); robert@0: } robert@0: catch (e) robert@0: { } // hide bug https://bugzilla.mozilla.org/show_bug.cgi?id=236791 robert@0: } robert@0: robert@0: // showLogin method: displays if necessariy that we are logged in robert@0: function showLogin() { robert@0: if (messageElement != false) robert@0: { robert@0: try { robert@0: document.getElementById('message').removeChild(messageElement); robert@0: } robert@0: catch (e) { } robert@0: } robert@0: if (loggedIn) robert@0: { robert@0: showingLoggedIn = true; robert@0: robert@0: loginPanel = document.getElementById('login'); robert@0: p = document.createElement('p'); robert@0: pre = document.createTextNode('Logged in as '); robert@0: strong = document.createElement('strong'); robert@0: strong_text = document.createTextNode(fullname); robert@0: strong.appendChild(strong_text); robert@0: mid = document.createTextNode(' ['); robert@0: a = document.createElement('a'); robert@0: a.href='javascript:logout();'; robert@0: a_text = document.createTextNode('logout'); robert@0: a.appendChild(a_text); robert@0: post = document.createTextNode(']'); robert@0: robert@0: p.appendChild(pre); robert@0: p.appendChild(strong); robert@0: p.appendChild(mid); robert@0: p.appendChild(a); robert@0: p.appendChild(post); robert@0: robert@0: messageP = document.getElementById('message'); robert@0: loginPanel.removeChild(messageP); robert@0: loginPanel.appendChild(p); robert@0: robert@0: messageElement = p; robert@0: robert@0: document.getElementById('username').disabled = 'disabled'; robert@0: document.getElementById('password').disabled = 'disabled'; robert@0: robert@0: document.getElementById('comments').focus(); robert@0: } robert@0: else robert@0: { robert@0: messageElement = document.createElement('strong'); robert@0: messageElement.appendChild(document.createTextNode(' ' + messages)); robert@0: messageElement.style.color = '#ff0000'; robert@0: document.getElementById('message').appendChild(messageElement); robert@0: } robert@0: } robert@0: robert@0: // logout method: prepares for a new login robert@0: function logout() robert@0: { robert@0: resetLogin(); robert@0: username = document.getElementById('username'); robert@0: password = document.getElementById('password'); robert@0: loginPanel = document.getElementById('login'); robert@0: username.value = ''; robert@0: password.value = ''; robert@0: username.disabled = null; robert@0: password.disabled = null; robert@0: robert@0: loginPanel.removeChild(messageElement); robert@0: loginPanel.appendChild(messageP); robert@0: robert@0: messageElement = false; robert@0: showingLoggedIn = false; robert@0: robert@0: username.focus(); robert@0: } robert@0: robert@0: // setupLogin method: to be called on page load, sets up the login script robert@0: function setupLogin() robert@0: { robert@0: username = document.getElementById('username'); robert@0: password = document.getElementById('password'); robert@0: addEvent(username, 'focus', focusField); robert@0: addEvent(username, 'blur', blurField); robert@0: addEvent(password, 'focus', focusField); robert@0: addEvent(password, 'blur', blurField); robert@0: } robert@0: robert@0: robert@0: // function to add events to the page in a cross-browser manner robert@0: function addEvent(objObject, strEventName, fnHandler) { robert@0: // DOM-compliant way to add an event listener robert@0: if (objObject.addEventListener) { robert@0: objObject.addEventListener(strEventName, fnHandler, false); robert@0: } robert@0: // IE/windows way to add an event listener robert@0: else if (objObject.attachEvent) { robert@0: objObject.attachEvent('on' + strEventName, fnHandler); robert@0: } robert@0: } robert@0: robert@0: addEvent(window,'load',setupLogin);