// $Header: /data/cvsroot/web/accountlogin/accountlogin.js,v 1.2 2011/01/03 22:08:32 djustl Exp $

var defaultTimeout = 15000;

// Display the 'My Account' login panel
var loginPanel = null;
function showLogin(elem) {
    if (loginPanel !== null) {
        loginPanel.hide();
    }
    
        loginPanel =
        new YAHOO.widget.Panel("loginpanel",
             {
                width: 400 + "px",
                close: true,
                modal: true,
                draggable: false,
                context: [elem, 'tr', 'br'],
                visible: false
            } );
    
    var panelBody = '<form name="loginform" action="https://' + window.location.hostname + '/accountlogin/accountlogin.php" method="post">' +
                    '<table>' +
                    '<tr><td style="text-align: right">' + EMAILADDRESS + '</td><td><input type="text" id="username" name="username" onkeypress="loginEnter(event)" /></td><td><span id="createaccount" class="loginmouseover loginbtn" onclick="loginSubmit(this)" title="' + CREATENEWACCOUNT + '"><span>' + CREATEACCOUNT + '</span></span></td></tr>' +
                    '<tr class="logindashbottomborder"><td colspan="2">&nbsp;</td><td><span id="forgotpassword" class="loginmouseover loginbtn" onclick="loginSubmit(this)" title="' + RESETPASSWORD + '"><span>' + FORGOTPASSWORD + '</span></span></td></tr>' +
                    '<tr><td style="text-align: right">' + PASSWORD + '</td><td colspan="2"><input type="password" id="password" name="password" onkeypress="loginEnter(event)" /></td></tr>' +
                    '<tr><td style="text-align: right">' + KEEPMESIGNEDIN + '</td><td><input type="checkbox" id="keepsignin" name="keepsignin" title="' + KEEPSIGNEDINFORDAYS + '" /></td><td><span id="login" class="loginmouseover loginbtn" onclick="loginSubmit(this)" title="' + LOGIN + '"><span>' + LOGIN + '</span></span>' +
                    '&nbsp;&nbsp;&nbsp;<span style="font-family: sans-serif; font-size: 12px; color: blue; text-decoration: underline;" class="loginmouseover" onclick="window.open(\'/lang/' + CURRENTLANGUAGE + '/faq.html\', \'Printable\', \'width=900,height=800,resizable=yes,toolbar=yes,scrollbars=yes,menubar=yes\')">Help</span></td></tr>' +
                    '</table>' +
                    '</form>' +
                    '<span style="font-size: 10px">'  + TOCREATEACCOUNT + '</span><br />' +
                    '<span style="font-size: 10px">'  + IFFORGOTPASSWORD + '</span><br />';
    
    loginPanel.setHeader(LOGINTOMYACCOUNT);
    loginPanel.setBody(panelBody);
    loginPanel.render(document.body);
    loginPanel.show();
    loginPanel.bringToTop();
}

// Submit the form, creating a hidden element to indicate which button was pressed
function loginSubmit(btnElem) {
    var loginAction = btnElem.id;
    
    var usernameElem = document.getElementById("username");
    if (usernameElem != null) {
        var usernameValue = usernameElem.value;
        if ((usernameValue == null) ||
            !usernameValue.match(/^[^@]+@[^@\.]+\..+$/)) {
                showLoginPopup(ERROR, INVALIDID);
                return false;
        }
    }
    
    if (loginAction.match('login')) {
        var actionElem = document.createElement("input");
        actionElem.setAttribute("type", "hidden");
        actionElem.setAttribute("name", "loginaction");
        actionElem.setAttribute("value", btnElem.id);
        
        // If a 'Screen ID' element exists, include its value as a hidden form input
        if (typeof screenId != 'undefined') {
            var screenIdElem = document.createElement("input");
            screenIdElem.setAttribute("type", "hidden");
            screenIdElem.setAttribute("name", "screenid");
            screenIdElem.setAttribute("value", screenId);
            
            var loginSpanElem = document.getElementById('login');
            if (loginSpanElem != null) {
                loginSpanElem.parentNode.insertBefore(screenIdElem, loginSpanElem);
            }
        }
        
        var loginSpanElem = document.getElementById('login');
        if (loginSpanElem != null) {
            loginSpanElem.parentNode.insertBefore(actionElem, loginSpanElem);
        }
        
        document.loginform.submit();
    } else {
        var loginPanelElem = document.getElementById('loginpanel');
        if (loginPanelElem != null) {
            var postQuery = 'loginaction=' + encode(loginAction);
            
            // Find input elements
            var inputElems = loginPanelElem.getElementsByTagName('input');
            for (var i=0; i<inputElems.length; i++) {
                if (inputElems[i].type.match('text') || inputElems[i].type.match('password')) {
                    postQuery += '&' + inputElems[i].id + '=' + encode(inputElems[i].value);
                } else if (inputElems[i].type.match('checkbox')) {
                    postQuery += '&' + inputElems[i].id + '=' + (inputElems[i].checked ? 'true' : 'false');
                }
            }
            
//            alert(postQuery);
            
            var cObj = YAHOO.util.Connect.asyncRequest('POST', '/accountlogin/accountlogin.php', loginSubmitCallback, postQuery);
        }
    }
}

var loginSubmitCallback = {
    timeout: defaultTimeout,
    
    success: function(o) {
//        alert(o.responseText);
        
        var ok = true;
        
        var errorMsg = getRecordColumn(o.responseXML, 'error');
        if (errorMsg != null) {
            var ok = false;
            showLoginPopup(ERROR, errorMsg);
        }
        
        if (ok) {
            var responseMsg = getRecordColumn(o.responseXML, 'message');
            
            if (responseMsg != null) {
                showLoginPopup(RESULTS, responseMsg);
                
                if (loginPanel != null) {
                    loginPanel.hide();
                }
            }
        }
    },
    failure: function(o) {
        showLoginPopup(ERROR, o.statusText);
    }
}

function doLogoff(elem) {
    window.location = '/accountlogin/accountlogin.php?loginaction=logoff';
}

function getRecordColumn(rec, colName) {
    var ret = null;
    
    if (rec != null) {
        var tag = rec.getElementsByTagName(colName)[0];
        if (tag != null) {
            ret = "";
            var node = tag.firstChild;
            if (node != null) {
                ret = node.nodeValue;
            }
        }
    }
    
    return ret;
}

// Display the 'Error' popup
var loginPopup = null;
function showLoginPopup(windowTitle, errorMsg) {
    var windowTitleLen = 500;
    
    errorMsg = '<span class="errorspan">' + errorMsg + '</span>';
    
    if (loginPopup !== null) {
        loginPopup.hide();
    }
    
    if (loginPopup !== null) {
        loginPopup.setHeader(windowTitle);
        loginPopup.setBody(errorMsg);
        loginPopup.show();
    } else {
        loginPopup =
        new YAHOO.widget.SimpleDialog(windowTitle,
             {
                width: windowTitleLen + "px",
                fixedcenter: true,
                visible: true,
                draggable: true,
                modal: true,
                close: true,
                zIndex: 1,
                text: errorMsg,
                constraintoviewport: true,
                buttons: [ { text:"Ok", handler:function(){ loginPopup.hide(); }, isDefault:true } ]
            } );
    }
    
    loginPopup.setHeader(windowTitle);
    loginPopup.render(document.body);
    loginPopup.show();
    loginPopup.bringToTop();
}

// Check if 'Enter' key was pressed in a Login input
function loginEnter(evt) {
    if (evt.keyCode == 13) {
        var loginBtn = document.getElementById("login");
        if (loginBtn != null) {
            loginSubmit(loginBtn);
        }
    }
}
