/***************************************************************************************************
 * Copyright 2009 Thomson Reuters Global Resources.
 * All Rights Reserved.  Proprietary and confidential information of TRGR.
 * Disclosure, use, or reproduction without the written authorization of TRGR is prohibited.
 **************************************************************************************************/

/**
    This file contains javascript functions for the Checkpoint login page
**/
addEvent(window, 'load', OnPageLoad);

function OnPageLoad(){
    formElem = document.forms.MainForm;

    // remove the cookie that tracks the right-side url
    document.cookie = detailsCookieName + "=" + emptyCookieValue + "; Path=/";

    // set focus on the username input field
    var FocusObject = formElem;
    if (FocusObject != null){
        FocusObject.username.focus();
    }

    // if this signon page is in one of the nested checkpoint frames,
    // then redirect the signon to the top-level checkpoint frame.
    if (cpFrame){
        cpFrame.location = window.location;
    }

    // add event handlers for enter key handling from username/password text fields
    handleLogin();
    handleReset();
    handleForgot();
}

function handleLogin() {
    // event handlers for the login button
    var loginBtnElem = document.getElementById('loginBtn');
    addEvent(loginBtnElem, 'click', confirmLogin);
    addEvent(loginBtnElem, 'mouseover', loginButtonHover);
    addEvent(loginBtnElem, 'mousedown', loginButtonDown);
    addEvent(loginBtnElem, 'mouseout', loginButtonUp);
}

function handleReset() {
    // event handlers for the reset button
    var resetBtnElem = document.getElementById('resetBtn');
    addEvent(resetBtnElem, 'click', resetLogin);
    addEvent(resetBtnElem, 'mouseover', resetButtonHover);
    addEvent(resetBtnElem, 'mousedown', resetButtonDown);
    addEvent(resetBtnElem, 'mouseout', resetButtonUp);
}

function handleForgot() {
    addEvent(document.getElementById('forgotUser'), 'click', forgotUsername);
    addEvent(document.getElementById('forgotPwd'), 'click', forgotPassword);
}

function confirmLogin(){
    loginButtonDown();

    if (tempMachineCookie != "" && formElem.store_persistent.checked) {
        alert("Because your browser is not supporting permanent cookies, your Name/Password will not be saved.");
    }
    if (formElem.username.value.length == 0){
        SetFocusObject(formElem.username);
        alert( "Login Error.  Username can not be blank." );
        loginButtonUp();
        return false;
    } else if(formElem.password.value.length == 0){
        alert( "Login Error.  Password can not be blank." );
        SetFocusObject(formElem.password);
        loginButtonUp();
        return false;
    } else {
        var thisLogin = formElem.username.value + "@" + formElem.password.value;
        if (lastLogin != null && thisLogin == lastLogin) {
            alert( "Login in progress. Please wait." );
            return false;
        }
        lastLogin = thisLogin;
        formElem.submit();
        return false;
    }
}

function resetLogin() {
    var thisLogin = formElem.username.value + "@" + formElem.password.value;
    if (thisLogin != lastLogin) {
        resetButtonDown();
        formElem.username.value = '';
        formElem.password.value = '';
        SetFocusObject(formElem.username);
        resetButtonUp();
        return true;
    }
    return false;
}

function forgotUsername() {
    return sendLoginGetPassword('username');
}


function forgotPassword() {
    return sendLoginGetPassword('password');
}


function sendLoginGetPassword(type) {
    var passwordHelpUrl = appendUrlParm(getPasswordUrl, 'formType', type);
    var userId = formElem.username.value;
    if (userId == null || userId == "" || userId.length == 0) {
        // prompt user to enter the user name
        var browser = new Is();
        if (browser.ie) {
            document.URL = passwordHelpUrl;
        } else {
            self.location.replace(passwordHelpUrl);
        }
    } else {
        formElem.action = passwordHelpUrl;
        formElem.password.value = "";
        formElem.submit();
    }
    return false;
}

function handleLoginEnter(e) {
    // handle enter key
    if (isKey(e, 13)) {
        return submitLogin(e);
    }
}

function handleLoginSpace(e) {
    // handle space key
    if (isKey(e, 32)) {
        return submitLogin(e);
    }
}

function submitLogin(e) {
    confirmLogin();
    e.cancelBubble = true;
    if (e.stopPropagation) {
        e.stopPropagation();
    }
    return false;
}

function handleResetSpace(e) {
    // handle space key
    if (isKey(e, 32)) {
        resetLogin();
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        return false;
    }
}

function loginButtonDown() {
    return toggleButton('login', 'down');
}

function loginButtonHover() {
    return toggleButton('login', 'hover');
}

function loginButtonUp() {
    return toggleButton('login');
}

function resetButtonDown() {
    return toggleButton('reset', 'down');
}

function resetButtonHover() {
    return toggleButton('reset', 'hover');
}

function resetButtonUp() {
    return toggleButton('reset');
}

function toggleButton(buttonName, event) {
    var thisLogin = formElem.username.value + "@" + formElem.password.value;
    if (thisLogin != lastLogin) {
        if (event == null) {
            event = '';
        }
        var buttonEl = document.getElementById(buttonName + 'Btn');
        if (event.toLowerCase() == 'hover') {
            buttonEl.style.backgroundPosition = "0 0";
            buttonEl.style.color = "#dda539";
            buttonEl.style.cursor='pointer';
        } else if (event.toLowerCase() == 'down') {
            buttonEl.style.backgroundPosition = "0 -21px";
            buttonEl.style.color = "whitesmoke";
            buttonEl.style.cursor = 'progress';
        } else {
            buttonEl.style.backgroundPosition = "0 0";
            buttonEl.style.color = "whitesmoke";
            buttonEl.style.cursor='pointer';
        }
    }
}

function toggleSpeedlink(slElem) {
    if (slElem != null) {
        var slMoreElem = document.getElementById('speedlinkMore');
        if (slElem.id == "speedlinkShowMore") {
            slHide = document.getElementById('speedlinkShowHide');
            slHide.style.display="inline";
            slMoreElem.style.display="inline";
            slElem.style.display="none";
        } else {
            slMore = document.getElementById('speedlinkShowMore');
            slMore.style.display="inline";
            slMoreElem.style.display="none";
            slElem.style.display="none";
        }
    }
}
