function activate(what) {
    (what == "access") ? mostrar('login') : ocultar('login');
    if ($('newuser')) (what == "newuser") ? mostrar('newuser') : ocultar('newuser');
    (what == "forgotpw") ? mostrar('forgotpw') : ocultar('forgotpw');
}

function checkSignupForm(e) {
    if (isHidden('login_nok')) {
        var elem = getTarget(e)
        for (var i = 0; i < elem.elements.length; i++) {
            if (elem.elements[i].value.trim().length == 0) {
                alert(compulsory_fields)
                elem.elements[i].focus()
                Event.stop(e)
                return
            }
        }
        if (!elem.elements['accept'].checked) {
            alert(must_accept)
            Event.stop(e)
        }
    } else {
        alert(invalid_login)
        Event.stop(e)
    }
}

function showResult() {
    if (http.readyState == 4) {
        if (http.status == 200) {
            var response = http.responseXML
            var total = response.getElementsByTagName('user').length
            if (total) {
                mostrar('login_nok')
                ocultar('login_ok')
            } else {
                ocultar('login_nok')
                mostrar('login_ok')
            }
            ocultar('login_loading')
        }
    }
}

function checkLogin(e) {
    // Default behaviour
    ocultar('login_loading')
    mostrar('login_nok')
    ocultar('login_ok')
    // Cancel previous call (if any)
    http.abort()
    // Remove whitespaces
    var elem = getTarget(e)
    elem.value = elem.value.replace(/\s+/gi, '')
    // Is it long enough?
    if ((elem.value.length >= 3) && (elem.value.length <= 31)) {
        // Allowed characters
        var regex = /[^A-Za-z0-9_\.-]/
        if (regex.test(elem.value)) {
            alert(allowed_characters)
            elem.focus()
        } else {
            // AJAX call
            var url = '/usuarios/check/login/' + elem.value
            http.open("GET", escape(url), true)
            http.onreadystatechange = showResult
            http.send(null)
            // Show "Loading" and hide ok/not ok
            mostrar('login_loading')
            ocultar('login_nok')
            ocultar('login_ok')
        }
    } 
}

function showSignupForm(e) {
    Event.stop(e)
    activate('newuser')
}

function showForgotForm(e) {
    Event.stop(e)
    activate('forgotpw')
}

function showLoginForm(e) {
    Event.stop(e)
    activate('access')
}

function captchaChange(e) {
    Event.stop(e)
    $('captcha').src = '/index/captcha/sid/' + Math.random()
}

function initUsersSignup() {
    // Check browser type and warn if Opera
    if (OP) addUserMessage(opera_browser)
    // Show signup form when clicked
    if ($('newuser_link1')) addEvent($('newuser_link1'), 'click', showSignupForm)
    if ($('newuser_link2')) addEvent($('newuser_link2'), 'click', showSignupForm)
    // Show forgot pw form when clicked
    if ($('forgot_link1')) addEvent($('forgot_link1'), 'click', showForgotForm)
    if ($('forgot_link2')) addEvent($('forgot_link2'), 'click', showForgotForm)
    // Show login form when clicked
    if ($('login_link1')) addEvent($('login_link1'), 'click', showLoginForm)
    if ($('login_link2')) addEvent($('login_link2'), 'click', showLoginForm)
    // Change captcha image when clicked
    if ($('captcha_change')) addEvent($('captcha_change'), 'click', captchaChange)
    // Input for the new user login
    // Check if exists when changes
    if ($('signup_login')) addEvent($('signup_login'), 'change', checkLogin)
    // Check inputs before submiting
    if ($('signup_form')) addEvent($('signup_form'), 'submit', checkSignupForm)
}

onLoad('initUsersSignup()')

