
/* Used by MissouriState.Web.Controls.MissouriState.Web.Controls.TextBox */
function MissouriStateUpdateCharsRemaining(FormObject, MaxLength)
{
	document.getElementById(FormObject.id + "CharCount").innerHTML = (MaxLength - FormObject.value.length);
}

/* Used by MissouriState.Web.Controls.ValidInputValidator */
function MissouriStateValidateInput(val)
{
    var value = ValidatorTrim(ValidatorGetValue(val.controltovalidate));

    return !value.match(/<[a-z]|<!|&#|\Won[a-z]*\s*=|(script\s*:)|expression\(/);
}

/* Used by MissouriState.Web.Controls.BudgetNumber */
function MissouriStateBudgetNumberEvaluateIsValid(val)
{
    var control = val.controltovalidate;
    var number = null;
    var alphaRegEx = /[a-zA-Z0-9]/;
    var numRegEx = /^[0-9]+$/;
    var whitespaceRegEx = /^\s+|\s+$/;
    
    if (document.getElementById(control + "BudgetTypeRBL_0").checked)
    {
        var fund = document.getElementById(control + "FundTB").value.replace(whitespaceRegEx, "");
        var org = document.getElementById(control + "OrgTB").value.replace(whitespaceRegEx, "");
        var acct = document.getElementById(control + "AcctTB").value.replace(whitespaceRegEx, "");
        var prgm = document.getElementById(control + "PrgmTB").value.replace(whitespaceRegEx, "");
        
        if(val.required == "false" && fund == "" && org == "" && acct == "" && prgm == "")
            return true;
        
        number = fund + (org == "" ? "      " : org) + acct + (prgm == "" ? "   " : prgm);
        
        if (number.length == 20)
            return (alphaRegEx.test(fund.substring(0, 1)) && numRegEx.test(fund.substring(1))) && numRegEx.test(acct) && 
                ((numRegEx.test(org) && numRegEx.test(prgm)) || (org == "" && prgm == ""));
        
    }
    else
    {
        number = document.getElementById(control + "FoundationTB").value.replace(whitespaceRegEx, "");
        if(val.required == "false" && number == "")
            return true;
        
        if (number != "")    
            return "RU".indexOf(number.substring(0, 1).toUpperCase()) >= 0 && numRegEx.test(number.substring(1));
    }

    return false;
}

/* Used by MissouriState.Web.Controls.CheckBoxList and MissouriState.Web.Controls.RadioButtonList */
function MissouriStateListRequiredEvaluateIsValid(val)
{
    var control = val.controltovalidate;
    for (var i = 0; i < val.numberofitems; i++)
    {
        var controlItem = document.getElementById(control + "_" + i);
        if(controlItem.checked)
            return true;
    }
    return false;
}

function MissouriStateRichTextBoxEvaluateIsValid(val) {
    
    var control = val.controltovalidate;

    //Force the TinyMCE editor to update the hiddenfield
    tinyMCE.get(control + '_tinymcediv').save();

    var element = document.getElementById(control + "HiddenField");

    if (val.required && element.value.length == 0) {
        if (val.errormessage != val.friendlyname + " is required.")
            val.errormessage = val.friendlyname + " is required.";
   
        return false;
    }

    if (val.maxlength.length > 0 && unescape(element.value).length > val.maxlength) {
        if (val.errormessage != val.friendlyname + " cannot exceed " + val.maxlength + " characters.")
            val.errormessage = val.friendlyname + " cannot exceed " + val.maxlength + " characters.";
        
        return false;
    }
    
    return true;
}