<!--

var complexityKeys = new Array('PLENGTH','REQUIRE_NUMERIC',"REQUIRE_MIXED_CASE",'REQUIRE_NON_ALPHAN','NO_END_ON_SPACE','NO_ILLEGAL_CHARS','MATCH_CONFIRM');
var passwdLength = 6;

var formID = 'auth';
var cdivID = 'complexityNotice';
var passwordFieldName = 'password';
var confirmPasswordFieldName = 'password_confirm';
var cdivHeightActive = '225';
var cdivHeightInactive = '15';
var complexityDef = {
    en_US:{
    "C_PLENGTH"             : passwdLength,
    "C_REQUIRE_MIXED_CASE"  : false,
    "C_REQUIRE_NUMERIC"     : false,
    "C_REQUIRE_NON_ALPHAN"  : false,
    "C_NO_END_ON_SPACE"     : true,
    "C_NO_ILLEGAL_CHARS"    : true,
    "C_MATCH_CONFIRM"       : true,

    "S_PLENGTH"             : 'Minimum password length: ',
    "S_REQUIRE_MIXED_CASE"  : 'Must contain upper and lowercase letters',
    "S_REQUIRE_NUMERIC"     : 'Must contain at least 1 number: 0-9',
    "S_REQUIRE_NON_ALPHAN"  : 'Must contain at least 1 symbol:<br /> ~ ! @ # $ % ^ & * - _ | { } [ ] <br />; : < > . , / + = ? ) (  <b>or a space</b>',
    "S_NO_END_ON_SPACE"     : 'Final character cannot be a space',
    "S_NO_ILLEGAL_CHARS"    : 'Cannot contain any illegal characters: \' " \\ ` ',
    "S_MATCH_CONFIRM"       : 'Password and Confirm Password field must match',
    "S_YES"                 : 'Yes',
    "S_NO"                  : 'No',
    "S_ONLY"                : 'only',
    "S_PASSREQ"             : 'Password Requirements',
    "S_SATISFIED"           : 'Satisfied'
    },
    es_NS:{
    "C_PLENGTH"             : passwdLength,
    "C_REQUIRE_MIXED_CASE"  : false,
    "C_REQUIRE_NUMERIC"     : false,
    "C_REQUIRE_NON_ALPHAN"  : false,
    "C_NO_END_ON_SPACE"     : true,
    "C_NO_ILLEGAL_CHARS"    : true,
    "C_MATCH_CONFIRM"       : true,

    "S_PLENGTH"             : 'Largo mínimo de contraseña: ',
    "S_REQUIRE_MIXED_CASE"  : 'Must contain upper and lowercase letters',
    "S_REQUIRE_NUMERIC"     : 'Must contain at least 1 number: 0-9',
    "S_REQUIRE_NON_ALPHAN"  : 'Must contain at least 1 symbol:<br /> ~ ! @ # $ % ^ & * - _ | { } [ ] <br />; : < > . , / + = ? ) (  <b>or a space</b>',
    "S_NO_END_ON_SPACE"     : 'El último carácter no puede ser un espacio',
    "S_NO_ILLEGAL_CHARS"    : 'No puede contener caracteres no admitidos: \' " \\ ` ',
    "S_MATCH_CONFIRM"       : 'Los campos de Contraseña y Confirmar contraseña deben ser iguales',
    "S_YES"                 : 'Si',
    "S_NO"                  : 'No',
    "S_ONLY"                : 'sólo',
    "S_PASSREQ"             : 'Contraseña Requerimientos',
    "S_SATISFIED"           : 'Satisfecho'
    }
};
var mixCaseRegex1   = /[A-Z]/;
var mixCaseRegex2   = /[a-z]/;
var numericRegex    = /[0-9]/;
var symbolRegex     = /[~!@#$%^ _{};:,<>=\-\|\&\*\[\]\.\/\+\?\)\(]/;
var endSpaceRegex   = /\s$/;
var illegalRegex    = /['"`\\]/;
var timeoutDivRef   = cdivID;

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

lang = getCookie('igcema_lang');
if ((lang == '') || (!complexityDef[lang]))
{
    lang = 'en_US';
}
function getFormType(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function initForm()
{
	//document.getElementById("tab-login").style.display="inline";
	//document.getElementById("tab-forgotpassword").style.display="none";
	//document.getElementById("form_type").value = "short";
	//document.getElementById("error-register").style.display="none";
}

function passwordForm()
{
	//document.getElementById("tab-login").style.display="none";
	//document.getElementById("tab-forgotpassword").style.display="inline";
	//document.getElementById("error-register").style.display="none";
	//_hbPageView('FORGOT_PASSWORD', '#');
}

function submitFormShort(theForm)
{
	var f = 0;
	if (!validateSection1(theForm))
	{
		f++;
		document.getElementById("error-register").style.display="inline";
		document.getElementById("error-register").innerHTML = "Error: Missing fields";
	}
	/*if (f == 0)
	{
		if (!checkEmail()) { f++; }
		if (!checkPassword()) { f++; }
		if (!checkPasswordMatch()) { f++; }
	}*/
	if (f == 0) { return true; } else { return false; }
}

function submitFormLogin(theForm)
{
	var f = 0;
	//if (!validateLogin(theForm)) { f++; }
	if (f == 0) { return true; } else { return false; }
}

function submitFormIf(n)
{
    if (document.forms[n])
    {
        document.forms[n].submit();
    }
}
function submitFormReset(n)
{
    if (document.forms[n])
    {
        var f = 0;
		if (!checkEmail()) { f++; }
		if (!checkPassword()) { f++; }
        if (f <= 0)
        {
            document.forms[n].submit();
        }
    }
}



function submitFormForgotpassword(theForm)
{
	var f = 0;
	if (!validateForgotpassword(theForm)) { f++; }
	if (f == 0) { return true; } else { return false; }
}

function validateSection1(theForm)
{
	var f = 0;
	if (theForm.firstname.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-firstname").style.color="#FF0000"; theForm.firstname.focus(); f++; } else { document.getElementById("label-firstname").style.color="#CCCCCC"; }
	if (theForm.lastname.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-lastname").style.color="#FF0000"; theForm.lastname.focus(); f++; } else { document.getElementById("label-lastname").style.color="#CCCCCC"; }
	if (theForm.email.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-email").style.color="#FF0000"; theForm.email.focus(); f++; } else { document.getElementById("label-email").style.color="#CCCCCC"; }
	if (theForm.password.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-password").style.color="#FF0000"; theForm.password.focus(); f++; } else { document.getElementById("label-password").style.color="#CCCCCC"; }
	if (theForm.password_confirm.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-confirmpassword").style.color="#FF0000"; theForm.password_confirm.focus(); f++; } else { document.getElementById("label-confirmpassword").style.color="#CCCCCC"; }
	if (theForm.company.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-company").style.color="#FF0000"; theForm.company.focus(); f++; } else { document.getElementById("label-company").style.color="#CCCCCC"; }
	if (theForm.title.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-jobtitle").style.color="#FF0000"; theForm.title.focus(); f++; } else { document.getElementById("label-jobtitle").style.color="#CCCCCC"; }
    f += (checkPassword() ? 1 : 0);
	if (f == 0) { return true; } else { return false; }
}

function validateLogin(theForm)
{
	var f = 0;
	if (theForm.login_email.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-login_email").style.color="#FF0000"; f++; } else { document.getElementById("label-login_email").style.color="#CCCCCC"; }
	if (theForm.login_password.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-login_password").style.color="#FF0000"; f++; } else { document.getElementById("label-login_password").style.color="#CCCCCC"; }
	if (f == 0) { return true; } else { return false; }
}

function validateForgotpassword(theForm)
{
	var f = 0;
	if (theForm.password_email.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-password_email").style.color="#FF0000"; f++; } else { document.getElementById("label-password_email").style.color="#CCCCCC"; }
	if (f == 0) { return true; } else { return false; }
}

/*
function validatePassword(theForm)
{
	var f = 0;
	if (theForm.login_email.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-login_email").style.color="#FF0000"; f++; } else { document.getElementById("label-login_email").style.color="#CCCCCC"; }
	if (theForm.login_password.value.replace(/^\s*|\s*$/g, "") == "") { document.getElementById("label-login_password").style.color="#FF0000"; f++; } else { document.getElementById("label-login_password").style.color="#CCCCCC"; }
	if (f == 0) { return true; } else { return false; }
}
*/

function checkEmail()
{
	email = document.getElementById("email").value;
    email = email.replace(/\s/,'');
	if (validateEmail(email))
	{
		return true;
	} else {
		return false;
	}
}

function validateEmail(email)
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,8})+$/.test(email))
	{
		return true;
	} else {
		return false;
	}
}

/*
function checkPassword()
{
	pwd = document.getElementById("password").value;
	if (validatePassword(pwd))
	{
		document.getElementById("label-password").style.color="#CCCCCC";
		return true;
	} else {
		document.getElementById("label-password").style.color="#FF0000";
		document.getElementById("error-register").style.display="inline";
		document.getElementById("error-register").innerHTML = "Error: invalid password";
		return false;
	}
}

function checkPasswordMatch()
{
	pwd = document.getElementById("password").value;
	pwd2 = document.getElementById("password_confirm").value;
	if (pwd == pwd2)
	{
		document.getElementById("label-confirmpassword").style.color="#CCCCCC";
		return true;
	} else {
		document.getElementById("label-confirmpassword").style.color="#FF0000";
		document.getElementById("error-register").style.display="inline";
		document.getElementById("error-register").innerHTML = "Error: password doesn't match";
		document.getElementById("password_confirm").value = "";
		return false;
	}
}

function validatePassword(pwd)
{
	var invalid = " "; // Invalid character is a space
	var minLength = 6; // Minimum length
	// check for minimum length
	if (pwd.length < minLength)
	{
		return false;
	}
	// check for spaces
	else if (pwd.indexOf(invalid) > -1)
	{
		return false;
	}
	else
	{
		return true;
	}
}
*/

function moveToTop()
{
    if (location.href.indexOf("#TOP") > 0)
    {
        location.href  = location.href;
    } else {
        location.href  = location.href + "TOP";
    }
}

function formAlert()
{
	alert("Test: " + document.getElementById("form_type").value)
}









function resetComplexityNotice(divToPurge,formToCheck)
{
    var scanResults = scanForComplexity(formToCheck);
    var newHTML = scanResults[0];
    required    = scanResults[1];
    satisfied   = scanResults[2];

    var complexitySatisfied = true;
    if (
        (required > 0)
            &&
        (satisfied < required)
    )
    {
        complexitySatisfied = false;
        emphasizeComplexityNotice(true);
    }
    else
    {
        var scanResultsFix = scanForComplexity(formToCheck,true);
        newHTML = scanResultsFix[0];
        setTimeout("emphasizeComplexityNotice()",1000)
    }

    var oldHTML     = document.getElementById(divToPurge).innerHTML;
    if (oldHTML != newHTML)
    {
        document.getElementById(divToPurge).innerHTML = newHTML;
    }

    return complexitySatisfied;
}

function emphasizeComplexityNotice(normalSize)
{
    document.getElementById(timeoutDivRef).style.height = normalSize ? cdivHeightActive + 'px' : cdivHeightInactive + 'px';
}

function scanForComplexity(formToCheck,skipCheck)
{
    var newHTML     = '<table id="complexityNotes"><tr><th align="left">' + complexityDef[lang]['S_PASSREQ'] + '</th><th align="left">' + complexityDef[lang]['S_SATISFIED'] + (skipCheck ? '!' : '?') + '</th></tr>';
    var required    = 0;
    var satisfied   = 0;
    var p = document.forms[formToCheck][passwordFieldName].value.length;
    for (var i = 0; i < complexityKeys.length; i++)
    {
        var ii = complexityKeys[i];
        var isRequired = ((ii == 'PLENGTH') ? (complexityDef[lang]['C_' + ii] > 0) : complexityDef[lang]['C_' + ii]);
        if (isRequired)
        {
            required++;
            var s = skipCheck ? 1 : checkForSatisfaction(ii,formToCheck);
            satisfied += s;
            newHTML += setComplexityNote(ii,s,p,skipCheck);
        }
    }
    newHTML += '</table>';
    return new Array(newHTML,required,satisfied);
}

function checkForSatisfaction(d,fs)
{
    var oneIfSatisfied = 0;

    var p = document.forms[fs][passwordFieldName].value;

    if (p.length > 0)
    {
        switch (d)
        {
            case 'PLENGTH' :
                if (p.length >= complexityDef[lang]['C_' + d])
                {
                    oneIfSatisfied = 1;
                }
            break;
            case 'REQUIRE_MIXED_CASE' :
                if (p.match(mixCaseRegex1) && p.match(mixCaseRegex2))
                {
                    oneIfSatisfied = 1;
                }
            break;
            case 'REQUIRE_NUMERIC' :
                if (p.match(numericRegex))
                {
                    oneIfSatisfied = 1;
                }
            break;
            case 'REQUIRE_NON_ALPHAN' :
                if (p.match(symbolRegex))
                {
                    oneIfSatisfied = 1;
                }
            break;
            case 'NO_END_ON_SPACE' :
                if (!(p.match(endSpaceRegex)))
                {
                    oneIfSatisfied = 1;
                }
            break;
            case 'NO_ILLEGAL_CHARS' :
                if (!(p.match(illegalRegex)))
                {
                    oneIfSatisfied = 1;
                }
            break;
            case 'MATCH_CONFIRM' :
                if (p == document.forms[fs][confirmPasswordFieldName].value)
                {
                    oneIfSatisfied = 1;
                }
            break;
        }
    }

    return oneIfSatisfied;
}

function setComplexityNote(d,s,p,trump)
{
    var r = '<tr id="complexityNote_' + d + '">';

    r += '<td class="complexityNote">' + complexityDef[lang]['S_' + d] + ((d == 'PLENGTH') ? complexityDef[lang]['C_' + d] : '') + '</td>';
    r += '<td'
    r += ((p > 0) ? (s > 0) ? ' class="' + (trump ? 'complexitySatisfied' : 'complexityOK') + '">' + complexityDef[lang]['S_YES'] : ' class="complexityNotOK">' + complexityDef[lang]['S_NO'] + ((d == 'PLENGTH') ? ', ' + complexityDef[lang]['S_ONLY'] + ' ' + p : '') : ' class="complexityNotOK">not set');
    r += '</td>'

    r += '</tr>';
    return r;
}


function checkPassword(f)
{
    var cdivSubject = cdivID;
    var formSubject = formID;
    var r = resetComplexityNotice(cdivSubject,formSubject);
    return r;
}

function checkPasswordOnTheFly()
{
    var cdivSubject = cdivID;
    var formSubject = formID;
    var r = resetComplexityNotice(cdivSubject,formSubject);
}


//-->