<!--
/**
*
* Handles UI elements during initial login to InnoVia
* script references several other files via Ajax requests
*
* Package:      Login
* Copyright:    MarketLinx Inc.
* Author:       L Pedley
**/

var curPage = location.href;
var acct = "wnc";
var validUrl = "/" + acct + "/valid/valid.html";

//Create new login class
var Login = new function() {
    this.ajax = null;
    this.form = null;
    this.promptDiv = null;
    this.noteDiv = null;
    this.fieldDiv = null;
    this.dotSpan = null;
    this.button = null;
    this.enabled = true;
    this.dots = '';
    this.formDflt = '';
    this.promptInterval = null;
    this.defaultPrompt = 'Enter a login ID and password, and click the Log In button.';
    this.initialHelp = true;            //set to true for new accounts. After a while, set to false
    this.passInterval = -1;         //force users to reset their password every so many days.
                                        //Set to -1 to deactivate completely
                                        //Set to 0 to force initial login passwd reset

    this.setPassInterval = function() {
        var self = Login;
        var hiddenInterFld = document.getElementById('passInterval');
        hiddenInterFld.value=self.passInterval;
    };

    this.init = function() {
        var self = Login;
        self.ajax = new Ajax();
        self.form = document.getElementById('loginForm');
        if(self.formDflt.length <= 0){
            self.formDflt = self.form.innerHTML;
        }
        self.promptDiv = document.getElementById('promptDiv');
        self.noteDiv = document.getElementById('noteDiv');
        self.capDiv = document.getElementById('capDiv');
        self.fieldDiv = document.getElementById('fieldDiv');
        self.buttonDiv = document.getElementById('buttonDiv');
        self.dotSpan = document.getElementById('dotSpan');
        self.button = document.getElementById('submitButton');
        self.setPrompt('base', self.defaultPrompt);
        self.form.LoginId.focus();
        self.toggleEnabled(false);
        self.form.onsubmit = function() { return false; }
        if(self.initialHelp)
            self.showHelpOptions();
        if(self.passInterval != -1)
            self.setPassInterval();

    };

    this.setPrompt = function(stat, msg) {
        var self = Login;
        var promptDiv = self.promptDiv;
        var msgSpan = document.getElementById('msgSpan');
        var statusClass = '';
        promptDiv.className = stat + 'Prompt'; // 'base', 'proc' or 'err'
        if (msgSpan.firstChild) {
            msgSpan.removeChild(msgSpan.firstChild);
        }
        msgSpan.appendChild(document.createTextNode(msg));
    };

    this.toggleEnabled = function(able) {
        var self = Login;
        if (able) {
            //check form state id: loginForm, aliasForm, helpForm
            if(self.form.id == 'loginForm')
                self.button.onclick = self.submitData;
            if(self.form.id == 'newPassForm')
                self.button.onclick = self.submitNewPasswd;
            if(self.form.id == 'aliasForm')
                self.button.onclick = self.submitAlias;
            if(self.form.id == 'helpForm')
                self.button.onclick = self.submitHelp;

            self.button.disabled = false;
            self.button.className = 'inputButton inputButtonActive';
            self.enabled = true;
        }
        else {
            if(self.form.id != 'loginForm')
            {
                self.button.onclick = null;
                self.button.disabled = true;
                self.button.className = 'inputButton inputButtonDisabled';
            }
            self.enabled = false;
        }
    };

    this.keyup = function(e) {
        var self = Login;
        if (!e) {
            e = window.event;
        }
        //self.evalCapsLockState(e);
        if (e.keyCode != 13) {  //enter
            self.evalFormFieldState();
        }
        else {
            if (self.enabled) {
                //check form state id: loginForm, aliasForm, helpForm
                if(self.form.id == 'loginForm')
                    self.submitData;
                if(self.form.id == 'newPassForm')
                    self.submitNewPasswd;
                if(self.form.id == 'helpForm')
                    self.submitHelp;
                if(self.form.id == 'aliasForm'){
                    self.submitAlias;
                }
            }
        }
    };

    this.evalFormFieldState = function() {
        var self = Login;
        if (!self.form) {
            return;
        }
        if(self.form.id == 'loginForm'){
            if (self.form.LoginId.value.length > 0 && self.form.Pass.value.length > 0)
                self.toggleEnabled(true);
        }
        else if(self.form.id == 'newPassForm'){
            if (self.form.newPass1.value.length > 0 && self.form.newPass2.value.length > 0)
                self.toggleEnabled(true);
        }
        else if(self.form.id == 'helpForm'){
            if(self.form.pass && self.form.email){
                if (self.form.pass.value.length > 0 && self.form.email.value.length > 0)
                    self.toggleEnabled(true);
            }
            else if(self.form.email){
                if (self.form.email.value.length > 0)
                    self.toggleEnabled(true);
            }
        }
        else if(self.form.id == 'aliasForm'){
//          if(self.form.alias.selectedIndex != -1)
                self.toggleEnabled(true);
        }
        else
            self.toggleEnabled(false);
    };

    this.evalCapsLockState = function(e) {
        var self = Login;
        var myKeyCode=0;
        var myShiftKey=false;
        var capsMsg ='Caps Lock is ON!';

        // Internet Explorer 4+
        if ( document.all && typeof window.opera == 'undefined') {
            myKeyCode=e.keyCode;
            myShiftKey=e.shiftKey;

        // Netscape 4
        } else if ( document.layers ) {
            myKeyCode=e.which;
            myShiftKey=( myKeyCode == 16 ) ? true : false;

        // Netscape 6
        } else if ( document.getElementById ) {
            myKeyCode=e.which;
            myShiftKey=( myKeyCode == 16 ) ? true : false;
        }

        // Upper case letters are seen without depressing the Shift key, therefore Caps Lock is on
        if (( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey) {
            if(self.capDiv.firstChild){
                self.capDiv.removeChild(self.capDiv.firstChild);
            }
            self.capDiv.appendChild(document.createTextNode(capsMsg));
        }
        else{
            if(self.capDiv.firstChild) {
                //self.capDiv.removeChild(self.capDiv.firstChild);
                //Keep the form from shifting in size as the caps is turned on/off.
                self.capDiv.innerHTML='&nbsp;';
            }
        }
    };

    this.submitData = function() {
        var self = Login;
        var postData = '';
        postData = formData2QueryString(self.form);
        self.ajax.doPost('chk_memberb.php', postData, self.handleLoginResp);
        self.showStatusPrompt();
        self.toggleEnabled(false);
    };

    this.handleLoginResp = function(str) {
        var self = Login;
        //make sure string is clean
        str = str.replace(/^\s*|\s*$/g,"");
        //Example Response:
        //response|message|uid|pass|aliasid:aliasPass:fname:lname,aliasid:aliasPass:fname:lname
        var respArr = str.split('|');
        var respType = respArr[0].toLowerCase();    //sucess | error | newPass
        var respMsg = respArr[1];                   //message to User
        var uid = respArr[2];                       //user id
        var pass = respArr[3];                      //password
        var respAlias = respArr[4];                 //alias list
        switch(respType){
            case 'success':
                if(typeof respAlias == 'undefined'){
                    self.form.submit();
                }
                else{
                    //if user has alias let user select it before login
                    self.showSuccessPrompt(respMsg);
                    self.loadAliasForm(respAlias,pass,uid);
                }
                break;
            case 'success_y':
                self.form.action='/cgi-'+acct+'/LI_login';

                if(typeof respAlias == 'undefined'){
                    self.form.submit();
                }
                else{
                    //if user has alias let user select it before login
                    self.showSuccessPrompt(respMsg);
                    self.loadAliasForm(respAlias,pass,uid);
                }
                break;
            case 'error':
                self.showErrorPrompt(respMsg);
                self.showHelpOptions();
                break;
            case 'newpass_y':
                self.form.action='/cgi-'+acct+'/LI_login';
                self.showErrorPrompt(respMsg);
                self.loadNewPassForm(uid,pass,uid);
                break;
            case 'newpass':
                self.showErrorPrompt(respMsg);
                self.loadNewPassForm(uid,pass);
                break;
            default:
                self.showErrorPrompt('Unrecognized Input. Possible Error Connecting to Database.');
                break;
        }

    };

    this.showStatusPrompt = function() {
        var self = Login;
        self.dots = '';
        self.setPrompt('proc', 'Processing');
        self.promptInterval = setInterval(self.showStatusDots, 200);
    };

    this.showStatusDots = function() {
        var self = Login;
        var dotSpan = self.dotSpan;
        self.dots += '.';
        if (self.dots.length > 4) {
            self.dots = '';
        }
        if (dotSpan.firstChild) {
            dotSpan.removeChild(dotSpan.firstChild);
        }
        dotSpan.appendChild(document.createTextNode(' ' + self.dots));
    };

    this.showSuccessPrompt = function(str) {
        var self = Login;
        var dotSpan = self.dotSpan;
        clearInterval(self.promptInterval);
        if (dotSpan.firstChild) {
            dotSpan.removeChild(dotSpan.firstChild);
        }
        self.setPrompt('base', str);
    };

    this.loadAliasForm = function(aliasList,pass,uid){
        var self = Login;
        //set form flag
        self.form.id = 'aliasForm';

        //create array from alias list
        //aliasList key: 'uid:pass:fname:lname,uid:pass:fname:lname'
        var aliasGrp = aliasList.split(',');
        var alias = new Array();
        var arrayLength = aliasGrp.length;
        for(var i=0; i<arrayLength; i++){
            alias[i] = aliasGrp[i].split(':');
        }
        //remove form options
        while(self.fieldDiv.firstChild) {
            self.fieldDiv.removeChild(self.fieldDiv.firstChild);
        }
        while(self.noteDiv.firstChild) {
            self.noteDiv.removeChild(self.noteDiv.firstChild);
        }

        var fieldEntryDiv = document.createElement('div');
        fieldEntryDiv.className = 'fieldEntry';
        self.fieldDiv.appendChild(fieldEntryDiv);

        //create select list
        var selectAlias = createNamedElement('select','MM_AGT_loginYNCS');
        selectAlias.className = 'inputField';
        selectAlias.id = 'alias';
        //limit the height of the alias select list so it doesn't get absurdidly large
        if(arrayLength > 6) {
            selectAlias.size = 6;
        }
        else {
            selectAlias.size = arrayLength;
        }
        if(document.all && typeof window.opera == 'undefined'){
            //IE
            selectAlias.onclick =new Function("setAlias(this)");
        }else{
            //others
            selectAlias.setAttribute("onclick","setAlias(this)");
        }
        //populate the select list
        for(var i=0; i<arrayLength; i++){
            option = document.createElement("option");
            option.value = alias[i][0];
            option.text = alias[i][2]+' '+alias[i][3];
            //default select logging in user
            if(alias[i][0] == uid && alias[i][1] == pass){
                option.setAttribute('selected','selected');
            }
            var elOptOld = selectAlias.options[i];
            try {
                // standards compliant; doesn't work in IE
                selectAlias.add(option, elOptOld);
            }
            catch(ex) {
                // IE only
                selectAlias.add(option, i);
            }
        }
        fieldEntryDiv.appendChild(selectAlias);

        //create hidden fields with special function for IE 'name' bug
        var hiddenPass = createNamedElement('input','MM_AGT_passwrdYNCS');
        hiddenPass.id = "password";
        hiddenPass.type = "hidden";
        hiddenPass.value = pass;
        self.fieldDiv.appendChild(hiddenPass);

        var hiddenBrowser = createNamedElement('input','browserXXWI');
        hiddenBrowser.type = "hidden";
        hiddenBrowser.value = "";
        self.fieldDiv.appendChild(hiddenBrowser);

        //create hidden field outside for so it doen't interfear with LI_LOGIN
        var infoHolder = createNamedElement('input','infoHolder');
        infoHolder.id = "infoHolder";
        infoHolder.type = "hidden";
        infoHolder.value = aliasList;
        self.buttonDiv.appendChild(infoHolder);

        var agtNameF = createNamedElement('input','AGT_FNAME');
        agtNameF.type = "hidden";
        agtNameF.setAttribute("value", alias[0][2]);
        self.noteDiv.appendChild(agtNameF);

        var agtNameL = createNamedElement('input','AGT_LNAME');
        agtNameL.type = "hidden";
        agtNameL.setAttribute("value", alias[0][3]);
        self.noteDiv.appendChild(agtNameL);
        try {
            if (Action != '') {
                var hiddenAction   = createNamedElement('input','Action');
                hiddenAction.id    = "Action";
                hiddenAction.type  = "hidden";
                hiddenAction.value = Action;
                self.fieldDiv.appendChild(hiddenAction);
            }
            //MLSNumbers field
            if (MLSNumbers!= '') {
                var hiddenMLSNumbers   = createNamedElement('input','MLSNumbers');
                hiddenMLSNumbers.id    = "MLSNumbers";
                hiddenMLSNumbers.type  = "hidden";
                hiddenMLSNumbers.value = MLSNumbers;
                self.fieldDiv.appendChild(hiddenMLSNumbers);
            }
        } catch(err) {
            if (self.form.LoginId.value.substring(0, 4) == 'osip') {
                alert(err);
            }
        }
        //strip out first name from alias list since its not an alias
        var cleanedAliasList = '';
        var fLoop = false;
        for(var j=1; j<arrayLength; j++){
            if(fLoop)
                cleanedAliasList += ','
            cleanedAliasList += alias[j][0];
            fLoop = true;
        }
        var aliasList = createNamedElement('input','AGT_ALIAS');
        aliasList.type = "hidden";
        if(document.all && typeof window.opera == 'undefined')
            aliasList.setAttribute("value", "'"+cleanedAliasList+"'");
        else
            aliasList.setAttribute("value", cleanedAliasList);

        self.noteDiv.appendChild(aliasList);

        var origLogin = createNamedElement('input','ORIG_LOGIN');
        origLogin.type = "hidden";
        origLogin.setAttribute("value", alias[0][0]);
        self.noteDiv.appendChild(origLogin);

        //set a back button so we can return to the default form
        var backButton = createNamedElement('input','back');
        backButton.value = "Back";
        backButton.setAttribute("type","button");
        backButton.setAttribute('className', 'inputButton');
        backButton.className = 'inputButton';
        backButton.onclick = function () {Login.resetForm()};
        self.buttonDiv.appendChild(backButton);

        //enable and relabel submit button
        self.toggleEnabled(true);
        self.button.value = 'Finish';

        var optimDiv = document.getElementById('optimDiv');
        if(document.all && typeof window.opera == 'undefined') {
          //cleanup
          while(optimDiv.firstChild) {
            optimDiv.removeChild(optimDiv.firstChild);
          }
        }

    };

    this.submitAlias = function() {
        var self = Login;
        var postData = '';
        self.showStatusPrompt();
        self.form.submit();
        self.toggleEnabled(false);
    };

    this.showErrorPrompt = function(str) {
        var self = Login;
        var dotSpan = self.dotSpan;
        clearInterval(self.promptInterval);
        if (dotSpan.firstChild) {
            dotSpan.removeChild(dotSpan.firstChild);
        }
        self.setPrompt('err', str);
        if(self.form.Pass)
            self.form.Pass.value = '';
    };

    this.showHelpOptions = function(){
        var self = Login;
        //cleanup div before createing
        while(self.noteDiv.firstChild) {
            self.noteDiv.removeChild(self.noteDiv.firstChild);
        }

        //login help
        self.noteDiv.appendChild(document.createTextNode('Email me my '));
        //create span to hold link
        var userSpan = document.createElement("span");
        userSpan.setAttribute("id","userid");
        //create anchors
        var userAnchor = document.createElement("a");
        userAnchor.setAttribute("href","javascript:{Login.loadHelpForm(\'login\')}");
        userAnchor.setAttribute("onclick","Login.loadHelpForm('login');return false;");
        userAnchor.appendChild(document.createTextNode("Login ID"));
        self.noteDiv.appendChild(userAnchor);
        //br
        var br = document.createElement("br");
        self.noteDiv.appendChild(br);

        //password help
        self.noteDiv.appendChild(document.createTextNode('Email me my '));
        //create span to hold link
        var passSpan = document.createElement("span");
        passSpan.setAttribute("id","password");
        //create anchor
        var passAnchor = document.createElement("a");
        passAnchor.setAttribute("href","javascript:{Login.loadHelpForm(\'password\')}");
        passAnchor.appendChild(document.createTextNode("Password"));
        self.noteDiv.appendChild(passAnchor);

        self.form.LoginId.focus();
    };

    this.loadHelpForm = function(key){
        var self = Login;
        var respMsg = '';
        var fieldname = '';
        var known = '';
        var unknown = '';
        if(key == 'login'){
            known = 'Password';
            unknown = 'Login ID';
        }
        else{
            known = 'Login ID';
            unknown = 'Password';
        }
        //update form id flag:loginForm, aliasForm, helpForm
        self.form.id = 'helpForm';

        if(key != 'login'){
            respMsg = 'Please enter your '+known+' and your email address. ';
            respMsg += 'If we can confirm this information you will receive your '+unknown+' in your email inbox.';
        }
        else{
            respMsg = 'Please enter the primary email address in your agent profile. ';
            respMsg += 'If we can confirm this information you will receive your Login ID in your email inbox.';
        }

        self.setPrompt('base', respMsg);

        //remove form options
        while(self.fieldDiv.firstChild) {
            self.fieldDiv.removeChild(self.fieldDiv.firstChild);
        }
        while(self.noteDiv.firstChild) {
            self.noteDiv.removeChild(self.noteDiv.firstChild);
        }

        //create new elements for login/pass field
        if(key != 'login'){
            var fieldTitleDiv = document.createElement('div');
            fieldTitleDiv.className = 'fieldTitle';
            self.fieldDiv.appendChild(fieldTitleDiv);
            fieldTitleDiv.appendChild(document.createTextNode(known+':'));

            var fieldEntryDiv = document.createElement('div');
            fieldEntryDiv.className = 'fieldEntry';
            self.fieldDiv.appendChild(fieldEntryDiv);

            var userField = document.createElement('input');
            userField.setAttribute("type","text");
            userField.setAttribute("name","MM_AGT_loginYNCS");
            userField.setAttribute("id","loginid");
            userField.className = 'inputField';
            fieldEntryDiv.appendChild(userField);
        }
/*
        else{
            var passField = document.createElement('input');
            passField.className = 'inputField';
            passField.setAttribute("name","MM_AGT_passwrdYNCS");
            passField.setAttribute("id","pass");
            passField.setAttribute("type","password");
            fieldEntryDiv.appendChild(passField);
        }
*/
        //create new elements for email address
        var fieldTitleDiv = document.createElement('div');
        fieldTitleDiv.className = 'fieldTitle';
        self.fieldDiv.appendChild(fieldTitleDiv);
        fieldTitleDiv.appendChild(document.createTextNode('Email Address:'));

        var fieldEntryDiv = document.createElement('div');
        fieldEntryDiv.className = 'fieldEntry';
        self.fieldDiv.appendChild(fieldEntryDiv);

        var emailField = document.createElement('input');
        emailField.setAttribute("name","email");
        emailField.className = 'inputField';
        emailField.setAttribute("type","text");
        //emailField.setAttribute("onblur","ckEmail(this)");
        if(document.all && typeof window.opera == 'undefined'){ //IE
            emailField.onclick =new Function("ckEmail(this)");
            emailField.onKeyPress = new Function("Login.evalCapsLockState(event)");
        }
        else{   //others
            emailField.setAttribute("onclick","ckEmail(this)");
            emailField.setAttribute("onKeyPress","Login.evalCapsLockState(event)");
        }
        emailField.setAttribute("id","email");
        fieldEntryDiv.appendChild(emailField);

        //add a form back button
        var resetButton = createNamedElement('input','resetForm');
        resetButton.setAttribute("type","button");
        resetButton.setAttribute("id","resetForm");
        resetButton.setAttribute('className', 'inputButton');
        resetButton.className = 'inputButton';
        resetButton.onclick = function () {Login.resetForm()};
        resetButton.setAttribute("value","Back");
        self.buttonDiv.appendChild(resetButton);

        self.button.value = 'Email My '+unknown;

        //for testing, so I can see what got created
    };

    this.submitHelp = function() {
        var self = Login;
        var postData = '';
        postData = formData2QueryString(self.form);
        self.ajax.doPost('chkNemailCred.php', postData, self.handleHelpResp);
        self.showStatusPrompt();
        self.toggleEnabled(false);
    };

    this.handleHelpResp = function(str) {
        var self = Login;
        str = str.replace(/^\s*|\s*$/g,"");
        var respArr = str.split('|');
        var respType = respArr[0].toLowerCase();
        var respMsg = respArr[1];

        //clear processing message
        var dotSpan = self.dotSpan;
        clearInterval(self.promptInterval);
        if (dotSpan.firstChild) {
            dotSpan.removeChild(dotSpan.firstChild);
        }

        if (respType == 'success') {
            self.setPrompt('base', respMsg);
        }
        else{
            self.setPrompt('err', respMsg);
            self.showErrorPrompt(respMsg);
        }

    };
    this.loadNewPassForm = function(login,pass) {
        var self = Login;
        //set form flag
        self.form.id = 'newPassForm';

        //remove form options
        while(self.fieldDiv.firstChild) {
            self.fieldDiv.removeChild(self.fieldDiv.firstChild);
        }
        while(self.noteDiv.firstChild) {
            self.noteDiv.removeChild(self.noteDiv.firstChild);
        }

        //create hidden approved credientals with special function for IE 'name' bug
        var hiddenLogin = createNamedElement('input','MM_AGT_loginYNCS');
        hiddenLogin.id = "MM_AGT_loginYNCS";
        hiddenLogin.type = "hidden";
        hiddenLogin.value = login;
        self.fieldDiv.appendChild(hiddenLogin);

        var hiddenPass = createNamedElement('input','MM_AGT_passwrdYNCS');
        hiddenPass.id = "MM_AGT_passwrdYNCS";
        hiddenPass.type = "hidden";
        hiddenPass.value = pass;
        self.fieldDiv.appendChild(hiddenPass);

        var hiddenBrowser = createNamedElement('input','browserXXWI');
        hiddenBrowser.type = "hidden";
        hiddenBrowser.value = "";
        self.fieldDiv.appendChild(hiddenBrowser);

        var hiddenPassInterval = createNamedElement('input','passInterval');
        hiddenPassInterval.type = "hidden";
        hiddenPassInterval.value = self.passInterval;
        self.fieldDiv.appendChild(hiddenPassInterval);


        //create new elements for pass fields
        var fieldTitleDiv = document.createElement('div');
        fieldTitleDiv.className = 'fieldTitle';
        self.fieldDiv.appendChild(fieldTitleDiv);
        fieldTitleDiv.appendChild(document.createTextNode('New Password:'));

        var fieldEntryDiv = document.createElement('div');
        fieldEntryDiv.className = 'fieldEntry';
        self.fieldDiv.appendChild(fieldEntryDiv);

        var passField = document.createElement('input');
        passField.className = 'inputField';
        passField.setAttribute("name","newPass1");
        passField.setAttribute("id","newPass1");
        passField.setAttribute("type","password");
        fieldEntryDiv.appendChild(passField);


        //create new elements for email address
        var fieldTitleDiv = document.createElement('div');
        fieldTitleDiv.className = 'fieldTitle';
        self.fieldDiv.appendChild(fieldTitleDiv);
        fieldTitleDiv.appendChild(document.createTextNode('Repeat:'));

        var fieldEntryDiv = document.createElement('div');
        fieldEntryDiv.className = 'fieldEntry';
        self.fieldDiv.appendChild(fieldEntryDiv);

        var passField2 = document.createElement('input');
        passField2.setAttribute("name","newPass2");
        passField2.className = 'inputField';
        passField2.setAttribute("type","password");
        passField2.setAttribute("id","newPass2");
        fieldEntryDiv.appendChild(passField2);

        //add a form back button
        if(document.getElementById('resetForm')) {
            //blah
        }else{
            var resetButton = createNamedElement('input','resetForm');
            resetButton.setAttribute("type","button");
            resetButton.setAttribute("id","resetForm");
            resetButton.setAttribute('className', 'inputButton');
            resetButton.className = 'inputButton';
            resetButton.onclick = function () {Login.resetForm()};
            resetButton.setAttribute("value","Back");
            self.buttonDiv.appendChild(resetButton);
        }
        //relable button
        self.button.value = 'Update and Log in';
        self.button.onclick = null;
        self.button.disabled = true;
        self.button.className = 'inputButton inputButtonDisabled';

        self.form.newPass1.focus();

        var optimDiv = document.getElementById('optimDiv');
        if(document.all && typeof window.opera == 'undefined') {
          //cleanup
          while(optimDiv.firstChild) {
            optimDiv.removeChild(optimDiv.firstChild);
          }
        }
    };
    this.resetForm = function(){
        var self = Login;
        //cleanup
        while(self.form.firstChild) {
            self.form.removeChild(self.form.firstChild);
        }
        //rebuild
        self.form.innerHTML = self.formDflt;
        self.form.id = 'loginForm';
        self.init();

        //reset
        self.setPrompt('base', self.defaultPrompt);
        var optimDiv = document.getElementById('optimDiv');
        if(optimDiv){
            optimDiv.onclick = function () {window.open(validUrl,"_self")};
        }
    }
    this.submitNewPasswd = function() {
        var self = Login;
        var postData = '';
        postData = formData2QueryString(self.form);
        self.ajax.doPost('chkNewPass.php', postData, self.handleNewPasswdResp);
        self.showStatusPrompt();
        self.toggleEnabled(false);
    };

        this.handleNewPasswdResp = function(str) {
        var self = Login;
        //make sure string is clean
        str = str.replace(/^\s*|\s*$/g,"");
        //response|message|newpasswd
        var respArr = str.split('|');
        var respType = respArr[0].toLowerCase();
        var respMsg = respArr[1];
        var newPass = respArr[2];

        if(respType == 'error'){
            self.showErrorPrompt(respMsg);
            self.form.newPass1.value = '';
            self.form.newPass2.value = '';
            self.toggleEnabled(true);
            self.form.newPass1.focus();
        }
        else{
            //set new password
            self.form.MM_AGT_passwrdYNCS.value = newPass;
            self.form.submit();
        }
    };

    this.cleanup = function() {
        var self = Login;
        //IE is very messy with memory
        self.form = null;
        self.promptDiv = null;
        self.noteDiv = null;
        self.fieldDiv = null;
        self.dotSpan = null;
        self.button = null;
        self.formDflt = null;
        self.selectAlias = null;
        self.hiddenPass = null;
        self.infoHolder = null;
        self.agtNameF = null;
        self.agtnameL = null;
        self.aliasList = null;
        self.origLogin = null;
        self.resetButton = null;
        self.emailField = null;
        self.userField = null;
        self.passField = null;
        self.passField2 = null;
    };
}

window.onload = Login.init;
document.onkeyup = Login.keyup;
window.onunload = Login.cleanup;

//make sure page is de-framed!
if (parent.frames.length > 0)
{
     parent.location.href = location.href;
}


function loadOptimizer(){
    //IE
    var optimDiv = document.getElementById('optimDiv');
    if(document.all && typeof window.opera == 'undefined') {
        var optimButton = createNamedElement('input','optimizerButn');
        optimButton.setAttribute("type","button");
        optimButton.setAttribute("id","optimizerButn");
        optimButton.setAttribute("className","inputButton");
        optimButton.setAttribute("class","inputButton");
        optimButton.className = 'inputButton';
        optimButton.onclick = function () {window.open(validUrl,"_self")};
        optimButton.setAttribute("value","Browser Optimizer");
        optimDiv.appendChild(optimButton);
    }
}

function goPublic() {
    window.open('/cgi-'+acct+"/LI_login?MM_AGT_loginYNCS=public&MM_AGT_passwrdYNCS=public&browserXXWI=","_self")
}
//status bar, Used for flash player button
var text=" ";
function statBarOn (text){
    window.status=text;
}
function statBarOff (text){
    window.status=text;
}

//needed for IE DOM bug fix when createing names for elements
function createNamedElement(type, name) {
    var self = Login;
    var element;
    try {
        element = document.createElement('<'+type+' name="'+name+'">');
    }
    catch (e) { }

    if (!element || !element.name) { // Not in IE, then
        element = document.createElement(type)
        element.name = name;
    }
    return element;
}
function setAlias(obj){
    //set hidden password field to the currently selected aliase's
    var self = Login;
    var uid = obj.value;
    var aliasList = self.form.infoHolder.value;
    var alias = aliasList.split(',');
    var arrayLength = alias.length;
    for(var i=0; i<arrayLength; i++){
        alias[i] = alias[i].split(':');
        if(alias[i][0] == uid){
            self.form.MM_AGT_passwrdYNCS.value = alias[i][1];
            return;
        }
    }
}

//--Rand image--
var currentdate = 0
var core = 0

function StringArray (n) {
  this.length = n;
  for (var i =1; i <= n; i++) {
    this[i] = ' '

  }
}

image = new StringArray(2)
image[0] = "startPage-graphic.jpg"
image[1] = "startPage-graphic2.jpg"

var ran = 60/image.length

function ranFlash() {
  currentdate = new Date()
  core = currentdate.getSeconds()
  core = Math.floor(core/ran)
    return(image[core])
}

-->

