/*	login.js
	========
	Login and registration form validation
	--------------------------------------
	Author: Benny Halperin
	--------------------------------------
*/

// ----------------------------------------------------------------------------------
/* Validate form */
function validateForm(fieldList)
{
	var control = null;
	var bRet = true;

	try {
		for (var count = 0; count < fieldList.length; count++) {
			control = fieldList[count];
			var v = control.value;
			if (v.length == 0)
				throw (MSG_PLEASE_INSERT + " " + control.title);
			if (control.id == "login" && !isValidLogin(v))
				throw MSG_INVALID_LOGIN;
			if (control.id == "email" && !isValidEmail(v))
				throw MSG_INVALID_EMAIL;
		}
	}
	catch (errMessage) {
		alert(errMessage);
		control.focus();
		bRet = false;
	}

	return bRet;
}

// Login validation
function isValidLogin(sLogin)
{
	//return sLogin.search(/^\w+$/) > -1;				// match login pattern
	return sLogin.search(/^[\w.:/=?]+$/) > -1;          //used for off campus access (HTTP_REFERER as login)
}

// Email address validation
function isValidEmail(sEmail)
{
	return sEmail.search(/^.+@.+\..+/) > -1;		// match e-mail pattern
}

function isDuplicate(sCommand, sParamName, sParamValue)
{
    var bRet = false;
    var request = XmlHttp.createNew();
    XmlHttp.setOnloadHandler(request,
    function(_request) {
        if (isResponseError(_request.responseXML)) 
        {
            alert(unescape(responseContent(_request.responseXML)));
            bRet = true;
        }
    });
    request.open("GET", "NetisUtils/srvrutil_custservices.aspx?command=" + sCommand + "&" + sParamName + "=" + sParamValue, false);
    request.send("");
    return bRet;
}

function isDuplicateLogin(sLogin)
{
    return isDuplicate("checkDuplicateLogin", "login", sLogin);
}

function isDuplicateEmail(sEmail)
{
    return isDuplicate("checkDuplicateEmail", "email", sEmail);
}

function resendPassword(sRetrieveBy, sLogin, sEmail, sFrom, sSubject, sHTMLBody)
{
	var bRet = true;
	var xmlhttp = XmlHttp.createNew();
	var sRequest = "<message>" + sFrom + sSubject + sHTMLBody + "</message>";
	var sURL = "netisutils/srvrutil_custservices.aspx?command=forgotMyPassword&retrieveBy=" + sRetrieveBy + "&login=" + sLogin + "&email=" + sEmail;

	xmlhttp.open("post", sURL, false);
	xmlhttp.send(sRequest);
	if (isResponseError(xmlhttp.responseXML)) {
		bRet = false;
	}

	return bRet;
}

function isResponseError(oXml)
{
	return oXml.documentElement.tagName.toLowerCase() == "error";
}

function responseContent(oXml)
{
	return oXml.documentElement.text;
}

function setValue(obj, name, bPersist)
{
	if (bPersist)
		obj.setAttribute(name, obj.value);
	else
		obj.removeAttribute(name);

	return obj;
}

function saveUserDataLogin(loginForm)
{
	if (!Compat.isIE)
		return;

	try {
		var bPersist = loginForm.oPersistLogin.checked;
		setValue(loginForm.login, "login", bPersist).save("oXMLLogin");
		setValue(loginForm.password, "password", bPersist).save("oXMLPassword");
		setValue(loginForm.oPersistLogin, "persistLogin", bPersist).save("oXMLBranch");
	} catch (e) { }
}

function loadValue(obj, name, attrName)
{
	obj.load(name);
	var val = obj.getAttribute(attrName);
	obj.value = (val == null) ? "" : val;
}

function loadUserDataLogin(loginForm)
{
	if (!Compat.isIE)
		return;

	try {
		var oPersist = loginForm.oPersistLogin;
		oPersist.load("oXMLBranch");
		oPersist.checked = (oPersist.getAttribute("persistLogin") == "on");
		if (oPersist.checked) {
			loadValue(loginForm.login, "oXMLLogin", "login");
			loadValue(loginForm.password, "oXMLPassword", "password");
		}
	} catch (e) { }
}

function openCertDetails()
{
	var oWin = window.open("https://www.thawte.com/cgi/server/certdetails.exe?code=ILCDIS5", "_new", 'height=550, width=500, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=yes');
}

//Password: blanks are not allowed.
function validatePassword(s)
{
	var re = /\s+/;
	var exist = re.test(s.value);
	if (exist) {
		alert(MSG_PASSWORD_INVALID_BLANKS);
		return false;
	}
	return true;
}

//Login name: blanks and characters '#'  '('  ')' and ':' are not allowed
function validateLogin(s)
{
	var re = /\s+/;
	var exist = re.test(s.value);
	if (exist) {
		alert(MSG_USERNAME_INVALID_BLANKS);
		return false;
	}

	re = /[\#\(\)\:]/;
	exist = re.test(s.value);
	if (exist) {
		alert(MSG_USERNAME_INVALID_CHARACTERS);
		return false;
	}

	return true;
}