// JavaScript for default.htm

// $Header$

var loginisvalid = false;
var ticketid = "";

function loaded() {
    var un = querySt("username");
    if (un != undefined) {
        document.getElementById("EmailField").value = unescape(un);
        document.getElementById("forgotlink").innerHTML = "";
        document.getElementById("newuserlink").innerHTML = "";
    }
    var ticket = querySt("ticketid");
    if (ticket != undefined) {
    	ticketid = ticket;
    }
}

function checklogin() {
    if (!validate(document.getElementById("EmailField"))) {
        document.getElementById("EmailField").focus();
        document.getElementById("EmailField").style.borderColor="#f00";
        document.getElementById("PasswordField").style.borderColor="#666666";
    } else if (document.getElementById("PasswordField").value == "") {
        alert("Please enter a password."); document.getElementById("PasswordField").focus();
        document.getElementById("EmailField").style.borderColor="#666666";
        document.getElementById("PasswordField").style.borderColor="#f00";
    } else if (checkvalidlogin()) {
        return false;
    } else {
        document.getElementById("EmailField").focus();
    }
    return false;
}

function forgot_onclick() {
    if (validate(document.getElementById("EmailField"))) {
        document.getElementById("EmailField").style.borderColor="#666666";
        document.getElementById("PasswordField").style.borderColor="#666666";
        doforgot();
        return false;
    } else {
        document.getElementById("EmailField").focus();
        document.getElementById("EmailField").style.borderColor="#f00";
        document.getElementById("PasswordField").style.borderColor="#666666";
        return false;
    }
}

function newuser_onclick() {
    if (isEmailAddress(document.getElementById("EmailField").value)) {
        document.getElementById("EmailField").style.borderColor="#666666";
        document.getElementById("PasswordField").style.borderColor="#666666";
        var thisuser = document.getElementById("EmailField").value;
		var newURL = "./newuser.htm?userid=" + thisuser;
		document.location = newURL;        
		return false;
    } else {
        document.getElementById("EmailField").focus();
        document.getElementById("EmailField").style.borderColor="#f00";
        document.getElementById("PasswordField").style.borderColor="#666666";
		var newURL = "./newuser.htm";
		document.location = newURL;        
        return false;
    }
}

// do forgot AJAX

function doforgot() {
    revealModal('modalPage');
    
    // create XML document with default header and root node
    initRequest();

    // create a deskid node if needed and set content
    if (havedeskid) {
        newRequestValueNode(RequestRoot, "deskid", deskid);
    }

    // create a request node
    r_node = newRequestNode(RequestRoot, "request")

    // create a function node and set content
    newRequestValueNode(r_node, "function", "forgot");

    // create a email node and set content
    newRequestCDATANode(r_node, "email", document.getElementById("EmailField").value);

    // create a from node and set content
    newRequestCDATANode(r_node, "from", forgotfrom);

    // create a subject node and set content
    newRequestCDATANode(r_node, "subject", forgotsubject);
    
    // create a message node and set content
    newRequestCDATANode(r_node, "message", forgotbody);

    // create a location node
    newRequestCDATANode(r_node, "location", document.location);

    // submit
    return submitRequest(checkresetdone, dohideModal);
}

function dohideModal(errormessage) {
    var messagearea = document.getElementById("modalContainer");
    messagearea.style.width = "100%";
    messagearea.style.left = 0;
    messagearea.style.top = "250px";
	messagearea.innerHTML = errormessage + bailout;
}

function checkresetdone() {
    hideModal('modalPage');
    

    var errorsec = req.responseXML.getElementsByTagName("error");
    var responsesec = req.responseXML.getElementsByTagName("response");

    var reqtxt;
    try {
        reqtxt = req.responseText;
    } catch(e) {
        reqtxt = "This browser does not return the XML as a string.  Check the trace.file.";
    }
    
    if (errorsec.length == 1) {
        skipbody = true;
        if (responsesec.length == 1) {
            handleError(responsesec[0]);
        } else {
            alert("Unable to get response from server\n\nServer returned:\n" + reqtxt);
        }
        return false;
    }
    
    var results = req.responseXML.getElementsByTagName("response");
    if (results.length == 1) {
        if (getElementTextNS("", "valid", results[0], 0) == "true") {
            alert("An email will be sent to " + getElementTextNS("", "email", results[0], 0) + " to reset the password.");
            return false;
        }
    } else {
        if (results.length == 1) {
            handleError(results[0]);
        } else {
            alert("Unable to get response from server\n\nServer returned:\n" + reqtxt);
        }
        return false;
    }
    return false;
}

// invoked by login;
// loads XML document
function checkvalidlogin() {
    try {
        loginisvalid = false;
        dologin();
    } catch(e) {
        var msg = (typeof e == "string") ? e: ((e.message) ? e.message: "Unknown Error");
        alert("Unable to contact server:\n" + msg);
    }
    return false;
}

// do check login AJAX

function dologin() {
    revealAction('action2');
    
    // create XML document with default header and root node
    initRequest();

    // create a deskid node if needed and set content
    if (havedeskid) {
        newRequestValueNode(RequestRoot, "deskid", deskid);
    }

    // create a request node
    r_node = newRequestNode(RequestRoot, "request")

    // create a function node and set content
    newRequestValueNode(r_node, "function", "login");

    // create a email node and set content
    newRequestCDATANode(r_node, "email", document.getElementById("EmailField").value);

    // create a password node and set content
    newRequestCDATANode(r_node, "password", document.getElementById("PasswordField").value);

    // create a location node
    newRequestCDATANode(r_node, "location", document.location);

    // submit
    submitRequest(checkdone, doactionHide);
    return false;
}

function doactionHide(errormessage) {
    hideAction("action2");
}

function checkdone() {
    hideAction("action2");

    var errorsec = req.responseXML.getElementsByTagName("error");
    var responsesec = req.responseXML.getElementsByTagName("response");

    var reqtxt;
    try {
        reqtxt = req.responseText;
    } catch(e) {
        reqtxt = "This browser does not return the XML as a string.  Check the trace.file.";
    }
    
    if (errorsec.length == 1) {
        skipbody = true;
        if (responsesec.length == 1) {
            handleError(responsesec[0]);
        } else {
            alert("Unable to get response from server\n\nServer returned:\n" + reqtxt);
        }
        return false;
    }
    
    var results = req.responseXML.getElementsByTagName("response");
    if (results.length == 1) {
        if (getElementTextNS("", "valid", results[0], 0) == "true") {
            document.getElementById("key").value = getElementTextNS("", "key", results[0], 0);
            if (!ticketid.sameText("")) {
            	document.getElementById("ticketid").value = ticketid;
            	document.getElementById("loginform").action = "./cascade.htm";
            }
            loginisvalid = true;
            document.getElementById("loginform").submit();
            return true;
        }
    } else {
        if (results.length == 1) {
            handleError(results[0]);
        } else alert("Unable to get response from server");
    }
    loginisvalid = false;
    return false;
}

// End JavaScript for default.htm