/*
 * index.js
 * Copyright (c) 2005 Scalix Corporation - All rights reserved
 */

gIsNS = document.getElementById && !document.all;
gIsIE = document.all;

/*-------------- Useful functions --------------*/

function getEvent( evt, wnd ) {
    if ( gIsIE ) {
        if ( wnd != null )
            return wnd.event;
        else
            return window.event;
    } else if ( gIsNS ) {
        return evt;
    }
}

function getElementByID( elemID ) {
    return document.getElementById( elemID );
}

function iframeGetVariable( iframeID, variableID ) {
    var w3cFrame = getElementByID( iframeID );
    return eval( "w3cFrame.contentWindow." + variableID );
}

function iframeExecFunction( iframeID, functionID ) {
    var w3cFrame = getElementByID( iframeID );
    return eval( "w3cFrame.contentWindow." + functionID );
}

function blockDisplay( elemID ) {
    var elem = getElementByID( elemID );
    if ( elem ) elem.style.display = "block";
}

function noDisplay( elemID ) {
    var elem = getElementByID( elemID );
    if ( elem ) elem.style.display = "none";
}

/*----------------- UI handlers ----------------*/

var jsLoaded = false;
var autoLoginMode = false;

function keyUpHandler(evt) {
    var theEvent = getEvent(evt);
    if ( theEvent.keyCode == 13 ) {
        if ( getElementByID("loginForm").style.display == "block" )
            login();
        else if ( getElementByID("expPwdForm").style.display == "block" )
            chgExpPwd();
    }
}

function loginPageOnLoadHandler() {
    check_jsLoaded();
}

function check_jsLoaded() {
    if ( iframeGetVariable( "jsFrame", "js_done_loading" ) ) {
        setTimeout( "check_jsLoaded()", 100 );
    } else {
        jsLoaded = true;
        // Using onkeyup instead of onkeydown. See bug #9790...
        document.onkeyup = keyUpHandler;
        if ( !autoLoginMode )
            showLoginForm();
    }
}

/*------------------ UI control ----------------*/

function showLoginForm() {
    noDisplay( "loadingMessage" );
    noDisplay( "loginSuccessful" );
    noDisplay( "waitLogin" );
    noDisplay( "expPwdForm" );
    blockDisplay( "loginForm" );
    getElementByID("username_field").value = "";
    getElementByID("password_field").value = "";
    try {
        getElementByID( "username_field" ).focus();
    } catch (e) {
        ;
    }
}

function showExpPwdForm() {
    noDisplay( "loadingMessage" );
    noDisplay( "loginForm" );
    noDisplay( "loginSuccessful" );
    noDisplay( "waitLogin" );
    blockDisplay( "expPwdForm" );
    getElementByID("old_password_field").value = "";
    getElementByID("new_password_field1").value = "";
    getElementByID("new_password_field2").value = "";
    try {
        getElementByID( "old_password_field" ).focus();
    } catch (e) {
        ;
    }
}

function showWaitLogin() {
    noDisplay( "loadingMessage" );
    noDisplay( "loginForm" );
    noDisplay( "loginSuccessful" );
    noDisplay( "expPwdForm" );
    blockDisplay( "waitLogin" );
}

function showLoginSuccessful() {
    noDisplay( "loadingMessage" );
    noDisplay( "loginForm" );
    noDisplay( "expPwdForm" );
    noDisplay( "waitLogin" );
    blockDisplay( "loginSuccessful" );
}

/*--------------- Login functions --------------*/

function login() {
    if (!jsLoaded) {
        setTimeout( "login()", 100 );
        return;
    }
    showWaitLogin();
    iframeExecFunction( "jsFrame", "getAccountClass()" ).partnerLogin(
        getElementByID("username_field").value,
        makeFugu( getElementByID("password_field").value ) );
}

function autoLogin( username, fugu ) {
    if (!jsLoaded) {
        autoLoginMode = true;
        setTimeout( "autoLogin('" + username + "','" + fugu + "')", 100 );
        return;
    }
    showWaitLogin();
    iframeExecFunction( "jsFrame", "getAccountClass()" ).partnerLogin( username, fugu );
}

function chgExpPwd() {
    if (!jsLoaded) {
        setTimeout( "chgExpPwd()", 100 );
        return;
    }
    var passwd1 = getElementByID("new_password_field1").value;
    var passwd2 = getElementByID("new_password_field2").value;
    if ( passwd1 != passwd2 ) {
        alert( iframeGetVariable( "jsFrame", "strings.change_password_wnd_passwords_no_match" ) );
        return;
    }
    showWaitLogin();
    iframeExecFunction( "jsFrame", "getAccountClass()" ).chgExpPasswd(
        getElementByID("username_field").value,
        makeFugu( getElementByID("old_password_field").value ),
        makeFugu( getElementByID("new_password_field1").value ) );
}
